Android使用SQLCipher-如何解密?
Android使用SQLCipher-如何解密?
我认为这个问题已经被问过了,然而我尝试了几个示例都没有成功。我的问题是这样的...我有一个设置了使用SQLCipher数据库加密的Android应用,在设备上运行得很好。
在模拟器上测试时,如果我使用DDMS下载数据库文件,我该如何读取该文件以检查表和数据?我尝试过使用SQLite3的命令行和ATTACH示例,但每次都只会收到以下信息“错误:文件已加密或不是数据库”。这确实表明加密过程是有效的,但我该如何在模拟器/ Eclipse之外正确解密?
我需要一个不同的SQLite客户端吗?还有其他人遇到这个问题吗?
我正在使用:SQLCipher for Android 2.0.8 06/14/2012
有人可以提供帮助吗?谢谢
我通过使用以下的小脚本解决了这个问题。
decrypt.sh
#!/bin/bash # Bash脚本用于解密数据库 echo "从设备中获取数据库.." adb pull /data/data/com.example/databases/database.db echo "如果存在,删除之前解密的数据库.." rm -r decrypted_database.db echo "将database.db解密为decrypted_database.db" sqlcipher -line database.db 'PRAGMA key = "encryption_key";ATTACH DATABASE "decrypted_database.db" AS decrypted_database KEY "";SELECT sqlcipher_export("decrypted_database");DETACH DATABASE decrypted_database;'
这些程序应该添加到你的PATH中:
- [adb](https://stackoverflow.com/a/19764254/1281750)
- [sqlcipher](https://www.zetetic.net/blog/2013/1/21/sqlcipher-available-on-homebrew.html)
在脚本中进行替换:
- 将`com.example`替换为你的包名
- 将`database.db`替换为数据库文件名
- 将`encryption_key`替换为加密密码
问题的原因是“正常”的SQLite工具中不包含SQLCipher,因此需要下载SQLCipher源代码并自行编译,才能获得支持SQLCipher的命令行工具。
对于解决方法,可以下载SQLCipher的源代码并进行编译,然后将生成的二进制文件添加到Android项目中。这样就可以在项目中使用SQLCipher。另外,还可以购买SQLCipher的商业版本,以获取用于编译的二进制文件。
以下是整理后的
Android使用SQLCipher - 如何解密?
问题的原因是“正常”的SQLite工具中不包含SQLCipher。因此,为了在Android中使用SQLCipher,我们需要下载SQLCipher的源代码并进行编译,以获得具有SQLCipher支持的命令行工具。
解决方法之一是下载SQLCipher的源代码并进行编译。通过这种方式,我们可以将生成的二进制文件添加到Android项目中,从而在项目中使用SQLCipher。另外,还可以购买SQLCipher的商业版本,以获取用于编译的二进制文件。
希望上述内容能够帮助您解决问题。如果您在编译过程中遇到困难,欢迎在下方留言。感谢阅读!