关于android开发使用sqlcipher解密db文件的疑问

发布于 2021-11-28 06:57:18 字数 329 浏览 741 评论 2

        最近在给公司做安卓版微信聊天记录的监控项目,开发工具使用的是android studio 1.4.测试环境是逍遥安卓模拟器。

      大家都知道,微信的EnMicroMsg.db文件是使用sqlcipher加密的,而我现在想提取里面的聊天数据,现在遇到如下问题:

      现在我获取到了EnMicroMsg.db的密钥,但是我却不知道如何利用密钥来解密,sqlcipher网上的介绍也是如何加密,没有如何解密。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

南汐寒笙箫 2021-12-01 06:48:20

引用来自“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);
    }

...

}

将你获得的密钥作为参数传递进去就应该可以打开解密好的数据库了。

希望回答对题主有帮助,有疑问欢迎继续讨论。

无法言说的痛 2021-11-29 23:36:15

对于对称加密,加密的加密,就是解密过程,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);
    }

...

}

将你获得的密钥作为参数传递进去就应该可以打开解密好的数据库了。

希望回答对题主有帮助,有疑问欢迎继续讨论。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文