【问题标题】:net.sqlcipher.database.SQLiteException: file is encrypted or is not a databasenet.sqlcipher.database.SQLiteException:文件已加密或不是数据库
【发布时间】:2015-07-28 14:54:45
【问题描述】:

我正在使用 SqlCipher 来加密数据库。为了测试我的方法,我使用了两步过程:

  1. 使用密钥创建一个数据库(在 SqlCipher 中)(当然!!!)通过检查打开它

    net.sqlcipher.database.SQLiteDatabase database = net.sqlcipher.database.SQLiteDatabase. openOrCreateDatabase(databaseFile, dataBasePassword, null); if(database.isOpen());

然后关闭database

  1. 再次使用代码打开数据库: net.sqlcipher.database.SQLiteDatabase database = net.sqlcipher.database.SQLiteDatabase. openOrCreateDatabase(databaseFile, password, null); if(database.isOpen())

问题:

密码1:2DD29CA851E7B56E4697B0E1F08507293D761A05CE4D1B628663F411A8086D99 密码2:foo123

当我尝试执行第 2 步(打开数据库)时,出现错误

net.sqlcipher.database.SQLiteException:文件已加密或不是 数据库

我知道有人问过这个问题,但没有最满意的答案。所以请大家帮忙!!!

【问题讨论】:

  • 根据您发布的内容,一切似乎都按预期工作。此外,Stack Overflow 是针对编程问题的。你有什么问题?
  • @CommonsWare 问题是当我通过密码打开数据库时,它可以正常工作。但是当我关闭它并尝试通过相同的密码重新打开它时,我收到错误“文件已加密或不是数据库”。
  • “试图通过相同的密码重新打开它” - 根据您的问题,您不是试图通过相同的密码重新打开它。您正在尝试通过不同的密码重新打开它。
  • @CommonsWare password1 和 password2 是两个不同数据库的两个密码。
  • 考虑到两个代码 sn-ps 都将databaseFile 作为第一个参数传递给openOrCreateDatabase(),我们怎么知道这一点?您的问题没有提及有关拥有多个数据库的任何内容。将来,当在这里询问有关您的代码不起作用的问题时,您需要提供minimal, complete, and verifiable example

标签: android mysql database encryption


【解决方案1】:

而不是使用:

  net.sqlcipher.database.SQLiteDatabase database = net.sqlcipher.database.SQLiteDatabase.
                openOrCreateDatabase(databaseFile, dataBasePassword, null,hook);

` 使用:

SQLiteDatabaseHook hook = new SQLiteDatabaseHook(){
              public void preKey(SQLiteDatabase database){
                database.rawExecSQL("PRAGMA kdf_iter = 4000");
              }
              public void postKey(SQLiteDatabase database){}
            };
        net.sqlcipher.database.SQLiteDatabase database = net.sqlcipher.database.SQLiteDatabase.
                openOrCreateDatabase(databaseFile, dataBasePassword, null,hook);

像魅力一样工作

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-05
    • 1970-01-01
    • 1970-01-01
    • 2010-12-03
    • 1970-01-01
    • 1970-01-01
    • 2018-09-08
    相关资源
    最近更新 更多