5

我认为有人问过这个问题,但是我尝试了几个示例均无济于事。我的问题是……我有一个 Android 应用程序设置来使用 SQLCipher DB 加密,它在设备上运行良好。

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

我需要不同的 SQLite 客户端吗?其他人会被困在这个问题上吗?

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

有什么帮助吗?谢谢

4

2 回答 2

3

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

解密.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;'

这些程序应该添加到您的 PATH 中:

在脚本中替换:

  • com.example与您的包名
  • 名称为 databasefile 的database.db
  • 带加密密码的 encryption_key
于 2014-09-11T13:10:56.583 回答
3

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

您必须下载源代码并自己编译才能获得支持 SQLCipher 的命令 shell。

于 2012-10-10T15:02:20.127 回答