Android使用SQLCipher-如何解密?

9 浏览
0 Comments

Android使用SQLCipher-如何解密?

我认为这个问题已经被问过了,然而我尝试了几个示例都没有成功。我的问题是这样的...我有一个设置了使用SQLCipher数据库加密的Android应用,在设备上运行得很好。

在模拟器上测试时,如果我使用DDMS下载数据库文件,我该如何读取该文件以检查表和数据?我尝试过使用SQLite3的命令行和ATTACH示例,但每次都只会收到以下信息“错误:文件已加密或不是数据库”。这确实表明加密过程是有效的,但我该如何在模拟器/ Eclipse之外正确解密?

我需要一个不同的SQLite客户端吗?还有其他人遇到这个问题吗?

我正在使用:SQLCipher for Android 2.0.8 06/14/2012

有人可以提供帮助吗?谢谢

0
0 Comments

我通过使用以下的小脚本解决了这个问题。

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`替换为加密密码

0
0 Comments

问题的原因是“正常”的SQLite工具中不包含SQLCipher,因此需要下载SQLCipher源代码并自行编译,才能获得支持SQLCipher的命令行工具。

对于解决方法,可以下载SQLCipher的源代码并进行编译,然后将生成的二进制文件添加到Android项目中。这样就可以在项目中使用SQLCipher。另外,还可以购买SQLCipher的商业版本,以获取用于编译的二进制文件。

以下是整理后的

Android使用SQLCipher - 如何解密?

问题的原因是“正常”的SQLite工具中不包含SQLCipher。因此,为了在Android中使用SQLCipher,我们需要下载SQLCipher的源代码并进行编译,以获得具有SQLCipher支持的命令行工具。

解决方法之一是下载SQLCipher的源代码并进行编译。通过这种方式,我们可以将生成的二进制文件添加到Android项目中,从而在项目中使用SQLCipher。另外,还可以购买SQLCipher的商业版本,以获取用于编译的二进制文件。

希望上述内容能够帮助您解决问题。如果您在编译过程中遇到困难,欢迎在下方留言。感谢阅读!

0