我在android中使用SQLCipher开发了应用程序。这是保护数据库文件到应用程序的安全方法。它适用于加密,但我希望解密加密的DB文件,并希望查看SQLite浏览器。
实际上我有很多表及其数据可用。现在,如果我想查看加密的数据库数据,就无法查看它(只有可用于查看数据的日志)。但是使用SQLite浏览器我看不到它。
我正在使用“info.guardianproject.database.sqlcipher.SQLiteDatabase”
我已经尝试了很多方法来解密它并查看SQLite浏览器,但是它给出了错误“An Error Occured:file is not a sqlite3 database”。
任何人都可以帮我解密加密的DB文件。
或者我应该复制加密数据库文件并使用“info.guardianproject.database.sqlcipher.SQLiteDatabase”对其进行解密,然后使用它来查看所有表格。
谢谢,
Mishal Shah
答案 0 :(得分:5)
我通过从设备中提取数据库并对其进行解密来解决此问题。下面的脚本将生成一个解密的数据库文件。可以使用SQLite-viewer打开此文件。
#!/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;'
应该在你的路径中:
替换脚本:
注意: 设备应该扎根
答案 1 :(得分:2)
您需要使用具有SQLCipher扩展的SQLite实用程序作为其一部分。您可以download and build the SQLCipher code on Linux,它可以为您提供可用于访问数据库的sqlite3
实用程序(使用适当的PRAGMA
语句来指定密码等。)
答案 2 :(得分:0)
decrypt.sh
脚本帮助了我一段时间。但过了一段时间后,我发现SQLiteManager开始支持SQLCipher加密数据库。它有一个漂亮的用户界面。即使它不是免费的,你仍然需要从设备中提取数据库文件,我认为这很好。
答案 3 :(得分:0)
在
之后的Android应用程序代码中dbHelper.getReadableDatabase(DBKEY); 数据库文件将被解密..通过将文件复制代码复制数据库文件写入某些外部SD卡文件路径并使用任何sqllite工具打开它
答案 4 :(得分:-1)
Gnome的GDA可以做到这一点。下载here。