QtCipherSqlitePlugin插件使用 (3)
写在前面#
- 关于使用 QtCipherSqlitePlugin 插件加密的一些注意事项。比如,修改默认加密算法的某些关键值
- 如果 还没有读过作者的文档, 请移步到这里
- 之前笔者也做过逆向,SqliteCipher加密原来是将密码和锁放在了本地, 看来本地加密文件蛮失望的。 😄
- 显然, 只要知道了密码, 剩下的都不是问题了。
- 那么, 密码怎么来? 如果你的密码是从写在本地的(程序内), 那么 IDA 就是密码查找工具。 很轻松就能找到代码中的密码。 什么, 密码放在服务器? 哈哈,找出密码还有其他的攻击方式, 具体的方法,这里不展开了。 (有点跑题了)
本文目标#
- 关于 SqlieCipher 加密
- 修改源码,尽量避免和他人的一致
QtCipherSqlitePlugin 加密#
- QtCipherSqlitePlugin插件内部调用了 sqlite3_rekey 函数 实现密钥的增加、变更和解除
- 加密源码分析,文件sqlitecipher.cpp中 open函数 做了一些关于加密算法解析的逻辑
- open 函数直接将密码password参数传给了sqlite3_rekey函数,
- sqlite3_rekey函数声明如下
/*
** Change the key on an open database.
** If the current database is not encrypted, this routine will encrypt
** it. If pNew==0 or nNew==0, the database is decrypted.
**
** Arguments:
** db - Database to be encrypted
** zDbName - Name of the database (e.g. "main")
** pKey - Passphrase
** nKey - Length of passphrase
*/
SQLITE_API int sqlite3_rekey(sqlite3* db, const void* pKey, int nKey);
第一个参数: 是哪个数据库, 第二个参数-密钥, 第三个参数-密钥长度
QtCipherSqlitePlugin 插件源码算法的一些设置#
- 尽量避免和他人的该插件源码一致。 可对加密算法做一些修改。
- 文件sqlitecipher.cpp中 open函数做做一些修改, 在算法默认值的范围内修改算法的一些初始值和条件。
- 以插件支持的 SQLCipher: AES 256 Bit CBC - SHA1 HMAC 算法为例, 可以修改下面的参数
- 代码哪里修改呢? 文件sqlitecipher.cpp中 open函数:
- 加密算法说明,官方也有对应的算法说明,请移步
最后#
- 如果你使用SqliteCipher加密了本地文件, 且本地加密的文件中存放了非常敏感的信息,那么,劝你改用其他的方式对信息加密, 这本身就不保险。
作者: mohist
出处:https://www.cnblogs.com/pandamohist/p/17254000.html
版权:本站使用「CC BY 4.0」创作共享协议,未经作者同意,请勿转载;若经同意转载,请在文章明显位置注明作者和出处。
分类:
qt5
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
2021-03-25 github源码下载总结
2021-03-25 Qt5读取系统环境变量和获取指定目录下的所有文件夹绝对路径