【发布时间】:2015-07-28 14:54:45
【问题描述】:
我正在使用 SqlCipher 来加密数据库。为了测试我的方法,我使用了两步过程:
-
使用密钥创建一个数据库(在 SqlCipher 中)(当然!!!)通过检查打开它
net.sqlcipher.database.SQLiteDatabase database = net.sqlcipher.database.SQLiteDatabase. openOrCreateDatabase(databaseFile, dataBasePassword, null); if(database.isOpen());
然后关闭database。
- 再次使用代码打开数据库:
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