我认为这个问题已被提出,但我已经尝试过几个例子无济于事。我的问题是这个......我有一个Android应用程序设置,可以在设备上使用SQLCipher数据库加密,工作正常。
在模拟器上进行测试时,如果我使用DDMS下载数据库文件,如何读取该文件以检查表和数据?我已经尝试使用SQLite3的命令shell和ATTACH示例,但是每次我这样做时,我只是得到以下消息'错误:文件已加密或不是数据库'。这肯定表明ENCRYPT正在工作,但是我如何在模拟器/ eclipse之外正确解密?
我需要一个不同的SQLite客户端吗?还有其他人对此感到困惑吗?
我正在使用:SQLCipher for Android 2.0.8 06/14/2012
有任何帮助吗?感谢
答案 0 :(得分:3)
“普通”SQLite工具不包括SQLCipher。
您必须download源和compile it yourself才能获得具有SQLCipher支持的命令shell。
答案 1 :(得分:3)
我通过使用这个小脚本解决了这个问题。
#!/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;'
这些程序应添加到您的路径中:
替换脚本: