sqlite3加密

c++调用sqlite3(带加解密)     StringConvert见https://blog.youkuaiyun.com/wxd090108/article/details/84190762 第三方文件     下载地址:https://sourceforge.net/projects/wxcode/files/Components/wxSQLite3/     下载wxsqlite3-***.zip          解压wxs... 阅读详情
 

“美是到处都有的,对于我们的眼睛不是缺少美,而是缺少发现”,罗丹的这句名言不仅适用于艺术创作,而且也适用于软件开发。具有聪明才智的人,总是不甘寂寞而乐于把自己的才华与人分享,善于发现和使用这些人的代码,实在是一个提高软件开发效率的明智之举。并且只有借助于众人的智慧才是开发出优秀软件的唯一途径。

wxSQLite3 就是这样的一个优秀作品,它把 SQLite 嵌入式数据库与 wxWidgets 结合起来,使用 C++ 语法对 SQLite 数据库的 C API 进行了封装,而且作为 wxWidgets 的一个组件,自然很好的融合了其特点,使得 wxWidgets 与  SQLite 数据库配合使用天衣无缝,堪称珠联璧合,比我自己目前正在编写的数据库操作代码优雅得多,正是我所需要的好东西。

编译 wxSQLite3 很简单,与 wxWidgets 类似,在 build 目录下可以找到一个对应 VC 编译器的 makefile.vc 文件,开头部分是编译选项,跟编译 wxWidgets 时使用的参数项大同小异,一望便知。然后使用命令 nmake -f makefile.vc,稍等片刻就编译完成。我照例把 wxSQLite3 编译成静态库使用,只是有一点要注意,makefile 文件中有个变量 WXSQLITE3_LIB_CXXFLAGS 在编译成静态库的时候要手动修改一下,将其中的 /MD 字段改为 /MT。这两个都是 cl.exe 的参数,具体含义可以查看MSDN。另外还需要注意的是,使用 wxSQLite3 的静态库时仍然依赖 SQLite3。所以在 VC 中使用 wxSQLite3 的话,一定要记得加入:

C++代码




否则链接的时候就会出现类似的错误:

Vc代码



另外,建议编译 wxSQLite3 的静态库的时候,SQLite3 也采用静态库的方式提供,避免发布的时候还要带上一个 dll 文件,麻烦!

关于生成 SQLite3 静态库的方法,可以参考这里:
http://haiyi.iteye.com/blog/287904


顺便提一下,CppSQLite3 也是一个关于 SQLite 优秀的 C++ 封装。比 wxSQLite3 更加通用一些,只是作者已经很久没有更新了。相比之下,wxSQLite3 的更新速度几乎和 SQLite3 官方同步,最适合像我这样喜新厌旧的人了

两个库的地址:
wxSQLite3
http://wxcode.sourceforge.net/components/wxsqlite3/
CppSQLite3
http://www.codeproject.com/KB/database/CppSQLite.aspx

 

SQLite 3 开源版不带加密功能,对于一个保存在本地的数据库来说没有加密功能让人难以接受,只要用记事本打开数据库就可以看到数据库内保存的数据,对安全多多少少有一点影响。有一个办法是把内容加密后保存到数据库中,但遇到类似 like,或字段内容与字段内容比较这就不行了。治本的办法是让 SQLite 原生的支持加密。好在 SQLite 的作者预留了加密解密的相关接口,许多爱好者也自己修改源版添加加密功能。如果你也在关注,那你可能已经阅读了大量关于如何添加加密的文章,同时我也不是很通相关的技术,我就不再讲解如何修改源码了。虽然网上有大量的文章教你如何修改源码,但都没有提供编译后的 DLL 文件,或者提供的 DLL 版本过低。这里介绍一个开源项目:wxSQLite3,该项目是一个 SQLite 的 C++ warpper,它顺带将 SQLite 的加密函数实现了,并且它使用 AES 算法进行加密。你可以在http://sourceforge.net/projects/wxcode/files/Components/下载到最新的包,在目录 \sqlite3\secure 下你可以找到一个 sqlite3.dll 文件,这个就是已编译的带加密的 SQLite 3 DLL 文件,而且 wxSQLite3 项目更新很快,你总是可以下载到较新的包。在最新的1.9.8版本中开始对256位AES加密进行实验,估计不久的版本就可以稳定使用。

使用起来也很简单,首先打开数据库 sqlite3_open,然后在操作数据库之前执行 sqlite3_key 后就可进行数据库操作,否则会返回错误。

sqlite3_key是输入密钥,如果数据库已加密必须先执行此函数并输入正确密钥才能进行操作,如果数据库没有加密,执行此函数后进行数据库操作反而会出现“此数据库已加密或不是一个数据库文件”的错误。

int sqlite3_key( sqlite3 *db, const void *pKey, int nKey),db 是指定数据库,pKey 是密钥,nKey 是密钥长度。例:sqlite3_key( db, "abc", 3);

sqlite3_rekey是变更密钥或给没有加密的数据库添加密钥或清空密钥,变更密钥或清空密钥前必须先正确执行 sqlite3_key。在正确执行 sqlite3_rekey 之后在 sqlite3_close 关闭数据库之前可以正常操作数据库,不需要再执行 sqlite3_key。

int sqlite3_rekey( sqlite3 *db, const void *pKey, int nKey),参数同上。

清空密钥为 sqlite3_rekey( db, NULL, 0)。

sqlite3加密功能--sqlcipher 由于原有sqlite3没有加密功能,如果库文件暴露出去,就可以直接查看,所以这里就实现了sqlite3数据库加密功能。 这里使用sqlcipher工具实现该加密功能,是对库文件加密而非是对具体数据加密 首先是源码的下载 下载地址:https://github.com/sqlcipher/sqlcipher 这里还依赖于openssl进行加密,所以要下载该源码包 之后对源码进行编译: 1. 阅读详情

相关推荐

利用wxsqlite3实现php-sqlite3加密扩展

1.      在windows下编译php,可参考后面的网址 (http://www.boilingbit.com/blog/windows%E4%B8%8B%E7%BC%96%E8%AF%91php/)   准备如下工具: http://windows.php.net/downloads/php-sdk/php-sdk-binary-tools-20110915.zip http:/

a359150423的专栏 2606

C++编译SQLite数据库以及如何使用加密数据库SQLCipher


 
 
 
 
 
 
 一、前言最近在倒腾东西的时候无意中需要在PC端解密某社交工具的数据库,移动设备中的加密数据库信息,我...

编码美丽 7388

在windows11安装pysqlcipher3,对sqlite3数据库进行加密

sqlite3数据库本身不支持密码设置,但数据库就这么暴露着,随意就能被他人连接查看,肯定是不可行的。是一种Python库,可以通过使用OpenSSL库对SQLite数据库进行加密和解密。它提供了在Python中连接到加密的SQLite数据库的功能,可以执行查询和事务等操作。直接在windows上。

xinguotiantian的专栏 2980

Sqlite数据库添加密码连接

Sqlite数据库进行加密和解密操作。1、首先添加引用,右键添加引用,选择特定的引用文件System.Data.SQLite;2、Sqlite数据库加密: 3、 Sqlite数据库解密: 最后,官方的System.Data.SQLite文件没有了加密解密功能,这个特定的文件是从GitHub获取的。有积分的(优快云规则所迫):SystemDataSqlite.dll带加密、解密功能-C#文档类资源-优快云下载可以对Sqlite设置密码和接触密码更多下载资源、学习资料请访问优快云下载频道.http

xaiqpl的博客 7924

编译sqlite3和wxSqlite3(含加密) 【原创】

编译wxsqlite3

Blaze J. 编程之旅---苦行 3674

sqlite3数据库如何设置用户名和密码?

ok,以上就是我这期的Bug修复内容啦,如果还想查找更多解决方案,你可以看看我专门收集Bug及提供解决方案的专栏《优快云问答解答》,都是实战中碰到的Bug,希望对你有所帮助。到此,咱们下期拜拜。码字不易,如果这篇文章对你有所帮助,帮忙给 bug菌 来个,您的支持就是我坚持写作分享知识点传播技术的最大动力。「猿圈奇妙屋」;

**My Coding Family** 4635

SQLite3:对SQLite3加密

发现两款不错的开源加密工具:sqleet和SQLite3MultipleCiphers

fengbohello的专栏 1万+

CppSQLite + sqlcipher + sqlite_3.33.0实现数据库加密

CppSQLite是开源sqlite3的C++封装类 sqlcipher 是sqlite3的加密模块,目前是支持openssl 附件里面带了可测试案例

python sqlite3加密_sqlite3加密

最近因为工作原因,需要使用sqlite数据库。sqlite数据库小并且使用方便,感觉挺不错的。但有一个不足就是没有对数据库进行加密,不过好的是sqlite预留有加密的接口,我们可以直接调用即可。我也是参考网上的资料对数据库进行加密:sqlite数据库默认没有加密功能,对一些需要对工程文件进行保密的场合产生了不便,本文以QT4.4.3为例,对qt源代码中的sql模块进行修改,为qt集成的sqlite...

weixin_39796116的博客 2771

Sqlite3重编译版本,支持Sqlite3_key和Sqlite3_rekey方法.rar

基于sqlite-amalgamation-3280000和wxsqlite3-3.3.1重编译版本,支持Sqlite3_key和Sqlite3_rekey方法

高效网络流量回放:使用tcpreplay实现多目标IP的pcap重放

本文详细介绍了如何使用tcpreplay工具高效回放网络流量pcap文件,并实现多目标IP发送。通过tcprewrite编辑报文和并行回放策略,可满足安全测试、负载测试等场景需求。文章涵盖安装、基础回放、核心技巧及性能优化,帮助读者构建真实流量压力测试环境。

weixin_29297127的博客 479

SQLite加密 wxSqlite3

一直在网上搜wxSqlite3的文档,但是总找不到能真正解决问题的,就是一个简单的编译wxSqlite3自带的示例也出了老多问题,后来却发现,其实wxSqlite3的readme中已经有了详细的方法,哦,就在眼皮子底下!为了避免再一次的遗忘,就在这里暂作一个记录吧。 截至记录时间,wxSqlite3的版本号为2.1.1,Sqlite3的版本为3.7.6.2,这两个都可以直接...

dkopg24406的专栏 476

无人机开发平台全解析:从开源飞控到企业级应用实战指南

无人机开发平台是无人机从飞行器演变为智能空中机器人的核心,其本质是提供了一套标准化的软硬件接口与工具链,使开发者能够基于稳定可靠的底层系统,专注于上层应用创新。从技术原理上看,一个完整的开发平台通常包含飞行控制器、机载计算机、传感器套件等硬件层,以及飞控固件、机器人操作系统(ROS/ROS 2)、软件开发套件(SDK)等软件层,通过分层架构实现飞行控制、感知决策与任务执行的解耦。其技术价值在于大幅降低了无人机行业应用的开发门槛,使开发者无需从零构建飞行控制系统,即可快速实现自动巡检、精准农业、物流配送等复杂

weixin_28712491的博客 412

sqlite3加密编译

废话不多说,直接贴出方法,目的在于请路过老鸟帮助测试一下功能是否全面,是否真正实现了加密(反正我用记事本打开生成的DB文件看不到写入记录的明文了)。 一、用开源的wxsqlite3(我用的版本是3.2.1.3) 1、到SQLite官网http://www.sqlite.org/下载sqlite-amalgamation-XXXXXX.zip(我下的版本是3.78) ,它已经包含了所有的源文件,...

Lawliet_Ma的博客 951

Lenovo 拯救者15ISK硬件升级实战:从内存到固态硬盘的全面优化

本文详细介绍了为联想拯救者15ISK笔记本电脑进行硬件升级的完整实战指南。通过评估升级可行性,指导如何挑选兼容的内存条与NVMe固态硬盘,并提供详细的拆机安装步骤与系统安装避坑技巧。升级后,笔记本的开机速度、软件加载及多任务处理能力获得飞跃式提升,让老旧设备重获新生。

weixin_29310631的博客 555

Innovus每日精要 | 用setScanReorderMode优化扫描链,效率翻倍!

在数字后端物理设计的世界里,扫描链优化就像修路一样,既要保证数据流的顺畅,又要尽量减少绕路和资源浪费。它的主要任务是优化扫描链的连接方式,确保数据能快速、安全地流动。无论是多电压域设计、分区设计,还是复杂的逻辑门,它都能帮你搞定。后,你会发现它不仅能帮你节省时间,还能让你的设计更优雅、更高效。下次遇到扫描链问题时,不妨试试这些技巧,说不定你的设计效率会翻倍!,它能帮你搞定扫描链优化的那些事儿,让你的设计更高效、更优雅。接下来,我们看看这个命令的几个关键选项,以及它们的实际用途。扫描链优化看似枯燥,但掌握。

weixin_50820814的博客 1442

如何对sqlite3数据库进行加密

如何对sqlite3数据库进行加密一.请先按笔者的文章,先生成sqlite3的动态链接库如何使用VC6编译sqlite3源码生成动态链接库(版本:sqlite-source-3_6_23_1) 二.解过互联网获取wxsqlite3-1.9.8.zip软件开发包三.解压解压展开wxsqlite3-1.9.8.zip软件开发包四.拷贝将目录wxsqlite3-1.9.8/s

2023跟着小虎玩着去软考 1万+

MOSFET导通电阻Rdson全解析:物理组成、公式推导与工程选型要点

在功率电子设计中,MOSFET作为核心开关器件,其导通电阻Rdson直接决定导通损耗与系统效率。从半导体物理角度看,Rdson并非单一固定值,而是由源极电阻、沟道电阻、累积层电阻、JFET区电阻、漂移区电阻及衬底电阻等多个分量串联而成,并随栅极驱动电压、结温以及击穿电压等级发生显著变化。理解Rdson的物理来源与数学表达,有助于工程师在低压大电流与高压小电流等不同场景中合理选型、优化驱动电压并准确估算热损耗。文章从沟道电阻公式出发,深入剖析耐压与导通电阻的物理矛盾、温度系数的影响规律,并给出数据手册参数的正

weixin_29163857的博客 195

sqlite3加密支持

sqlite3加密支持 sqlite3免费版并不支持加密,不过留有接口,有不少开源的加密实现,不过有的需要使用openssl配置略显繁琐,不过使用wxsqlite比较方便。 wxSqlite3 wxSqlite3是wxWidgets的扩展组件,对sqlite3的C API进行了封装,并且实现了加解密功能。目前支持两种算法,AES128算法(默认)和AES256算法wxSqlite在secur...

weixin_33770878的博客 1266

HTML金色流星雨(完整代码)

HTML实现金色流星雨动态效果的完整代码。

AIGC 992

室内温度控制仿真(Simulink+PLC)

本篇博客将会带领大家解读Simulink自带的仿真模型(Thermal Model of a House),之后再讨论PLC控制系统控制环境温度的一些经验方法

RXXW_Dor的博客 3462

SQLite3的加密函数说明 sqlite3_key sqlite3_rekey

sqlite3_key是输入密钥,如果数据库已加密必须先执行此函数并输入正确密钥才能进行操作,如果数据库没有加密,执行此函数后进行数据库操作反而会出现“此数据库已加密或不是一个数据库文件”的错误。 int sqlite3_key( sqlite3 *db, const void *pKey, int nKey),db 是指定数据库,pKey 是密钥,nKey 是密钥长度。例:sqlite3_

cnicfhnui的博客 1万+

PCL点云库入门(第6讲)——PCL库中Eigen数学工具库的基本使用(持续更新)

Eigen库是一个高性能的C++模板库,专注于线性代数、矩阵和向量运算,以及相关的数值分析和算法。在Eigen库中,所有的矩阵和向量均被视为矩阵模板类的实例。向量可以被看作是特殊形式的矩阵,具体表现为只包含1行或1列。

qq_36812406的博客 1752

SQLite3的加密

SQLite3的加密函数说明 sqlite3_key是输入密钥,如果数据库已加密必须先执行此函数并输入正确密钥才能进行操作,如果数据库没有加密,执行此函数后进行数据库操作反而会出现“此数据库已加密或不是一个数据库文件”的错误。 int sqlite3_key( sqlite3 *db, const void *pKey, int nKey),db 是指定数据库,pKey 是密钥,nKey

majiakun1的专栏 5586

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

sqlite3加密版

sqlite3加密版 1.lib、dll 在github上的下载地址 https://github.com/rindeal/SQLite3-Encryption 2.加密接口相关说明 // 解密或用于第一次加密 int sqlite3_key(sqlite3 *db, const void *zKey, int nKey); // 重设密码 int sqlite3_rekey(sqlite3 *db, const void *zKey, int nKey); sqlite3_key是输入密钥,如果数据库已加

weixin_41167925的博客 2059

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

上一篇: SQLITE3 使用总结
下一篇: wxWidgets编译和遇到的问题总结
embededvc
博客等级 码龄21年 176粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值