sqlite3加密支持

2023-11-14

sqlite3加密支持

sqlite3免费版并不支持加密,不过留有接口,有不少开源的加密实现,不过有的需要使用openssl配置略显繁琐,不过使用wxsqlite比较方便。

wxSqlite3

wxSqlite3是wxWidgets的扩展组件,对sqlite3的C API进行了封装,并且实现了加解密功能。
目前支持两种算法,AES128算法(默认)和AES256算法
wxSqlite在secure/src/sqlite3secure.c中引入了其他源文件,这样你只用编译sqlite3secure.c就可以了,但是这样有时会比较麻烦。

sqlite3-secure

项目地址
我这里说的sqlite3-secure就是从wxSqlite3中提取的,只不过做了些修改,更加方便使用,直接添加到工程中就可以了。
而且使用起来仍然使用sqlite3的C API,没有什么C++的封装。

经过测试的系统:Mac OS X, iOS, Android

修改了什么?

  • 将不用添加到工程的C源文件后缀名改为ccode(要不然得屏蔽编译这些文件,否则会出现符号重复的错误)
  • 默认启用加密支持(添加启用加密的宏)
  • 删除了wxsqlite的C++封装,只提供原生sqlite3-api
  • 删除了shell.c(编译shell命令工具sqlite的代码)
  • 整理了目录结构

加密解密API

// 解密或用于第一次加密
int sqlite3_key(sqlite3 *db, const void *zKey, int nKey);
// 重设密码
int sqlite3_rekey(sqlite3 *db, const void *zKey, int nKey);

注意:

  • 第一次创建数据库,使用sqlite3_key或者sqlite3_rekey都可以设置密码
  • 必须在sqlite3_open成功之后,使用sqlite3_key进行解密
  • 要重新设置密码(sqlite3_rekey),必须解密成功后才可以进行
  • 一般不重设密码的话,只使用sqlite3_key就够了

DEMO

//
//  main.cpp
//  sqlite3
//
//  Created by Luwei on 15/1/9.
//  Copyright (c) 2015年 Luwei. All rights reserved.
//

#include <iostream>

#include "sqlite3-secure/sqlite3.h"

void db_open(sqlite3 **ppDb, const std::string &path);
void db_close(sqlite3 *
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

sqlite3加密支持 的相关文章

  • 基于嵌入式Qt的输入法syszuxpinyin自动弹出软件盘的问题

    移植好的syszuxpinyin输入法能正常的检测到控件焦点并自动弹出软键盘 当使用默认的QLineEdit控件时就有了一些小小的问题 问题一 QLineEditt在默认情况下会自动出现焦点 从而导致一进入界面就弹出软键盘 但是我们需要点击
  • springboot打jar包供第三方使用(以回调为例)

    前言 有时我们需要封装功能类库供第三方使用 这时候打包和我们平时发布项目有所不同 假设我们现在要对外提供一个计算功能 使用者只需要传入计算参数就能实现结果异步返回 最后还得对jar包进行混淆 目录 前言 1 编写回调函数类 2 直接打JAR

随机推荐

  • python实现画雪景(二级python书中实例)

    from turtle import from random import def snow hideturtle pensize 2 for i in range 100 r g b random random random pencol
  • 【opencv】linux下生成libopencv_world.so

    一个项目需要用到linux下libopencv world so 按照网上诸多 linux下安装opencv 教程 发现都没有生成libopencv world so的方法 然后偶然间搜到了window编译opencv方法中可以通过开启BU
  • 用java连接Oracle 11g

    了解一下JDBC JDBC 是连接数据库的程序模块 由JSP应用程序 JDBC API JDBC DriverManager JDBC驱动管理器 JDBC驱动程序和数据库几部分组成 java应用程序通过JDBC API访问JDBC驱动管理器
  • Python调用多媒体定时器实现高精度定时

    自己在使用Python实现周期执行的任务时 通常会用time sleep 函数实现 但该方法能实现的最小周期只有30ms左右 且定时不够精确 大概有 5ms左右的跳动 该方法可满足绝大多数应用场景 但对某些实时性要求较高的应用场景则不适用
  • input 上传文件 判断重名限制文件个数

    原生文件上传 accept快捷上传 xls xlsx格式 文件上传表单的提交方式必须是 post 编码类型必须为 enctype multipart form data 上传多个文件属性 multiple
  • Mac Idea使用技巧

    1 IDEA自动生成serialVersionUID Inspections gt serialzable class without serialVersionUID 勾上 在实现了Serializable接口的类上使用alt enter
  • xzp 线刷 android 10,索尼Xperia XZ刷机教程_Sony XZ强刷官方FTF系统包

    在这里来说一下有关索尼Xperia XZ的强刷教程了 这个强刷教程主要就是针对官方的FTF格式的强刷包来操作的 因为之前看到有机友把官方的rom强刷包下载下来之后不知道如何刷入 所以在这里整理了一下详细的强刷教程供大家参考一下了 这个也不复
  • Property or method “scope“ is not defined

    VUE报错 Property or method scope is not defined 是因为缺失了 slot scope scope 造成组件认为 scope 未定义 加上去就行
  • 内网离线安装 Visual Studio 2022 及插件

    一 互联网环境下使用命令行创建本地缓存 首先下载小型引导程序文件 然后使用命令行创建本地缓存 缓存创建后 可使用它来安装 Visual Studio 一 下载 Visual Studio 引导程序 1 通过互联网电脑下载最新当前频道版本的
  • 对偶上升实例-MATLAB代码

    一 本文概述 本文给出对偶上升法 dual ascent 求解凸优化问题最优解的代码实例 如果您觉得对您有帮助 请点个赞 加个收藏 谢谢 二 简单实例 本文以下述实例为例 撰写对偶上升法的迭代步骤 并给出最终可运行的MATLAB代码 以便大
  • Yolov5配置傻瓜教程

    软硬件环境 Win10 anaconda python3 7 gtx 1660ti cuda 10 1 pytorch 1 7 YOLOv5 介绍 2020年6月25日 Ultralytics发布了YOLOV5 的第一个正式版本 其性能与Y
  • #超级系统详细#搭建深度学习环境(python3.8+cuda10.2+tensorflow2.3)

    写在前面 1 搭建环境前最重要的是先清楚各个版本之间的配对情况 官网版本匹配信息 tensorflow与python https tensorflow google cn install source windows 大致如下 cuda9
  • 【python】将自定义常用的一些函数封装成可以直接调用的模块方法

    将常用一些的函数封装成可以直接调用的模块方法 1 背景 2 具体步骤 3 扩展 1 背景 在实际的操作过程中 经常会用到一个功能 如果每次编写代码的时候都进行重新编写或者打开已经编写好的函数进行复制粘贴 这样就显得很麻烦 有没有什么方法可以
  • Different Subsets For All Tuples (经典,贪心考虑一个子序列是否出现在原序列中)

    https codeforces com problemset problem 660 E include
  • 基础算法题 —— 说反话-加强版(字符串截取)

    说反话 加强版 给定一句英语 要求你编写程序 将句中所有单词的顺序颠倒输出 输入格式 测试输入包含一个测试用例 在一行内给出总长度不超过500 000的字符串 字符串由若干单词和若干空格组成 其中单词是由英文字母 大小写有区分 组成的字符串
  • 摄像头分辨率与码流对照表

    https support dahuatech com tools onlineTools
  • 【进制转换】二进制,十进制,八进制,16进制

    1 二进制与十进制相互转换 二进制转为十进制 0000 0110转换为10进制 二进制里面没有 个位 十位 百位 只能通过从左到右或者从右到左第几位来描述 从右往左开始 第一位是0 进制的基数是2 那么就是0 20 第二位是1 就是1 21
  • 如何实现数据可视化分析?有这个解决方案就够了

    在这个数据呈爆炸式增长的时代 每天都有海量数据在产生 如何通过简单的方式实现业务上的分析 计算 交互 并最终呈现出可视化的分析结果 帮助业务人员更好地理解数据的价值 将数据变现 是当前众多企业都需要面对的问题 想要直观准确地从不同领域中的数
  • XGBOOST算法Python实现(保姆级)

    摘要 XGBoost算法 eXtreme Gradient Boosting 在目前的Kaggle 数学建模和大数据应用等竞赛中非常流行 本文将会从XGBOOST算法原理 Python实现 敏感性分析和实际应用进行详细说明 目录 0 绪论
  • sqlite3加密支持

    sqlite3加密支持 sqlite3免费版并不支持加密 不过留有接口 有不少开源的加密实现 不过有的需要使用openssl配置略显繁琐 不过使用wxsqlite比较方便 wxSqlite3 wxSqlite3是wxWidgets的扩展组件