使用SQLCipher加密SQLite数据库文件:1. 下载SQLCipher库;2. 在代码中替换sqlite3为sqlcipher;3. 执行PRAGMA key = 'your_password'; 来设置加密密钥。这样.db文件就无法用普通SQLite工具打开,只有密码才能查看数据。
步骤一:安装SQLCipher
SQLCipher是SQLite的加密扩展。首先从官网下载SQLCipher源码,编译安装。Windows用户可以用预编译版本。对于Android或iOS,直接集成到项目中。设置密码后,数据库文件看起来像随机数据,无法被直接读取。
防护措施
防止.db文件泄露:1. 设置文件权限,只允许应用访问;2. 使用加密存储路径;3. 定期备份并加密备份;4. 避免将.db文件上传到云盘或分享。万一文件被偷,也无法打开。
查看加密.db文件
用sqlcipher命令行工具:sqlcipher encrypted.db,然后输入 .key your_password,之后就能正常查询SELECT * FROM table;。图形化工具如DB Browser for SQLite不支持加密,需要用支持SQLCipher的版本。
Python中使用SQLCipher
pip install sqlcipher3,然后import sqlcipher3db as sqlite3; conn = sqlite3.connect('test.db'); conn.execute("PRAGMA key = 'password'"); 这样创建的数据库就是加密的。查看时重复这个过程输入密码。
常见风险与避免
弱密码容易被暴力破解,用长密码结合特殊字符。不要硬编码密码到代码中,用环境变量或用户输入。关闭内存数据库功能,避免数据残留在RAM中被dump。
移动端实现
Android:用androidx.sqlite库,设置SQLCipher。iOS:用FMDB+SQLCipher pod。加密后,即使手机丢失,数据也安全。
FAQ
Q: 如何快速测试.db文件是否加密?
A: 用sqlite3打开,如果提示文件损坏,就是加密成功。
Q: 忘记密码怎么办?
A: 无法恢复,SQLCipher用不可逆加密,备份密码是必须的。
Q: 加密会影响性能吗?
A: 轻微影响读写速度,但对大多数应用可忽略。
Q: 免费工具有哪些?
A: SQLCipher开源免费,命令行工具直接用。