Android使用SQLCipher - 你怎么解密?

时间:2012-10-10 14:41:31

标签: android sqlite sqlcipher

我认为这个问题已被提出,但我已经尝试过几个例子无济于事。我的问题是这个......我有一个Android应用程序设置,可以在设备上使用SQLCipher数据库加密,工作正常。

在模拟器上进行测试时,如果我使用DDMS下载数据库文件,如何读取该文件以检查表和数据?我已经尝试使用SQLite3的命令shell和ATTACH示例,但是每次我这样做时,我只是得到以下消息'错误:文件已加密或不是数据库'。这肯定表明ENCRYPT正在工作,但是我如何在模拟器/ eclipse之外正确解密?

我需要一个不同的SQLite客户端吗?还有其他人对此感到困惑吗?

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

有任何帮助吗?感谢

2 个答案:

答案 0 :(得分:3)

“普通”SQLite工具不包括SQLCipher。

您必须download源和compile it yourself才能获得具有SQLCipher支持的命令shell。

答案 1 :(得分:3)

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

decrypt.sh

#!/bin/bash
# Bashscript to decrypt databases

echo "pull db from device.."
adb pull /data/data/com.example/databases/database.db

echo "removing previous decrypted db, if existent.."
rm -r decrypted_database.db

echo "decrypting database.db into 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;'

这些程序应添加到您的路径中:

替换脚本:

  • com.example 与您的包名
  • database.db ,名称为databasefile
  • encryption_key ,加密密码