sqlcipher加密的android数据库在pc端如何解密

innoyang 2016-03-28 10:33:53
RT 做的项目是在android端生成了一个数据库 采用sqlcipher加密的,加密成功了,之后PC端有一款软件需要用到这个数据库,需要进行解密,请问PC端如何采用java程序解密呢,有没有做过的啊,万分感谢。
...全文
299 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
public static void encrypt(Context ctxt, String dbName,
                               String passphrase) throws IOException {
        File originalFile = ctxt.getDatabasePath(dbName);

        if (originalFile.exists()) {
            File newFile =
                    File.createTempFile("sqlcipherutils", "tmp",
                            ctxt.getCacheDir());
            SQLiteDatabase db =
                    SQLiteDatabase.openDatabase(originalFile.getAbsolutePath(),
                            "", null,
                            SQLiteDatabase.OPEN_READWRITE);

            db.rawExecSQL(String.format("ATTACH DATABASE '%s' AS encrypted KEY '%s';",
                    newFile.getAbsolutePath(), passphrase));
            db.rawExecSQL("SELECT sqlcipher_export('encrypted')");
            db.rawExecSQL("DETACH DATABASE encrypted;");

            int version = db.getVersion();

            db.close();

            db =
                    SQLiteDatabase.openDatabase(newFile.getAbsolutePath(),
                            passphrase, null,
                            SQLiteDatabase.OPEN_READWRITE);
            db.setVersion(version);
            db.close();

            originalFile.delete();
            newFile.renameTo(originalFile);
        }
    }

作者:lbyte
链接:http://www.jianshu.com/p/3baf311f8c8c
來源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
夜半萧声冷 2017-01-09
  • 打赏
  • 举报
回复
同求啊,不会c和c++,native层看不懂啊
line1213 2016-07-11
  • 打赏
  • 举报
回复
解决了没有,有相同的需求
innoyang 2016-04-13
  • 打赏
  • 举报
回复
早上来顶下。。。。。
innoyang 2016-04-12
  • 打赏
  • 举报
回复
自己顶一下。。。。。

80,348

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧