关于android开发使用sqlcipher解密db文件的疑问
最近在给公司做安卓版微信聊天记录的监控项目,开发工具使用的是android studio 1.4.测试环境是逍遥安卓模拟器。
大家都知道,微信的EnMicroMsg.db文件是使用sqlcipher加密的,而我现在想提取里面的聊天数据,现在遇到如下问题:
现在我获取到了EnMicroMsg.db的密钥,但是我却不知道如何利用密钥来解密,sqlcipher网上的介绍也是如何加密,没有如何解密。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
引用来自“seebigsea”的评论
对于对称加密,加密的加密,就是解密过程,SQLCipher官网有命令行下加密解密的完整例子:
https://www.zetetic.net/sqlcipher/sqlcipher-api/
命令行打开加密数据库需要注意的是指令 pragma key='your password';必须是第一个执行的命令。这个指令的作用其实既是加密,也是解密,加密的是你后面要写入数据库的数据,解密的是你后面要读取的数据。不存在非商业版不支持解密的说法。
但是看题主的描述,应该是有微信完整的加密jar包和lib库的,那么只要在自己的工程里面继承一个
import com.tencent.kingkong.database.SQLiteOpenHelper;
class MyDatabaseHelper extends SQLiteOpenHelper {
...
MyDatabaseHelper(Context context, String dbName, String password) {
super(context, dbName, SQLiteDatabase.LockedDevice.DEFAULT, password, SQLiteDatabase.Arithmetic.AES256CBC, null, DATABASE_VERSION, null);
}
...
}
将你获得的密钥作为参数传递进去就应该可以打开解密好的数据库了。
希望回答对题主有帮助,有疑问欢迎继续讨论。
对于对称加密,加密的加密,就是解密过程,SQLCipher官网有命令行下加密解密的完整例子:
https://www.zetetic.net/sqlcipher/sqlcipher-api/
命令行打开加密数据库需要注意的是指令 pragma key='your password';必须是第一个执行的命令。这个指令的作用其实既是加密,也是解密,加密的是你后面要写入数据库的数据,解密的是你后面要读取的数据。不存在非商业版不支持解密的说法。
但是看题主的描述,应该是有微信完整的加密jar包和lib库的,那么只要在自己的工程里面继承一个
import com.tencent.kingkong.database.SQLiteOpenHelper;
class MyDatabaseHelper extends SQLiteOpenHelper {
...
MyDatabaseHelper(Context context, String dbName, String password) {
super(context, dbName, SQLiteDatabase.LockedDevice.DEFAULT, password, SQLiteDatabase.Arithmetic.AES256CBC, null, DATABASE_VERSION, null);
}
...
}
将你获得的密钥作为参数传递进去就应该可以打开解密好的数据库了。
希望回答对题主有帮助,有疑问欢迎继续讨论。