【问题标题】:Android encryption database安卓加密数据库
【发布时间】:2013-08-06 13:29:23
【问题描述】:

我在 Android 中搜索加密数据库的解决方案。 我知道存在一个名为 SQLCipher 的库,但该库不适用于高于 Android 4.1 的版本,这就是为什么我要求您提供另一个加密数据库的库或解决方案(我知道我可以加密我的字符串数据一个接一个,但我搜索加密整个数据库,就像在 SQLCipher 中一样)。如果可能的话,给我一个使用你的库或你的解决方案的样本,这比一个大解释更好:)。

提前感谢您的解决方案。

【问题讨论】:

  • 我不这么认为,我只是开发了一个几乎不加密的应用程序。我的第一选择是编写类似数据库访问代理的东西,它可以按值处理加密和解密的值。但请注意,您将无法再在数据库中进行搜索。仅适用于未加密的值。
  • 是的,如果我按值加密值,我就无法在我的数据库中搜索,这就是为什么我搜索加密整个数据库,就像在 SQLCipher 中一样,如果只有 SQLCipher 适用于 Android 4.2 和 4.3...
  • 我会尝试弄清楚我是否可以访问我的应用程序的 SQLLite 文件,以及是否可以加密此文件。如果可能的话,您可以编写一些东西,在启动时解密 SQLLite 文件并在应用停止时对其进行加密。

标签: java android database encryption


【解决方案1】:

我知道存在一个名为 SQLCipher 的库,但该库不适用于高于 Android 4.1 的版本

这是不正确的。它在 Android 4.2 和 4.3 上运行良好。事实上,我刚刚在运行 Android 4.3 的 Nexus 10 上测试了我的两个 SQLCipher for Android 示例,同时输入了这个答案,我没有遇到任何问题。

【讨论】:

  • 哦,好消息,请告诉我您的 SQLCipher 的版本是什么。导致我的项目在 4.0.4(galaxy s3 中)中运行良好,并在 4.2.2(galaxy s4)中崩溃并出现 SQLException(“不是错误”)。在 SQLCipher 的网站上,我发现历史记录在 4.1 中有效,但此后没有发布。如果您有解决我的问题的答案,我将非常感激
  • @user1770436:“请问您的 SQLCipher 的版本是什么”——最新的 (2.2.1)。 “我在历史上发现在 4.1 中有效,但此后没有发布”——每次 Android 本身获得新的 API 级别时,都不需要更新第三方库。
  • 我尝试了 2.2.1 但这并没有解决我的问题,即继续在 4.0.4 中工作而不是在 4.2.2 问题从这一行变成新的 net.sqlcipher.database.SQLiteDatabase(path,密码, (net.sqlcipher.database.SQLiteDatabase.CursorFactory) 工厂, 标志, databaseHook);
  • @user1770436:也许您应该考虑使用代码和堆栈跟踪打开一个新的 StackOverflow 问题。这些项目在 Android 4.3 上运行良好:github.com/commonsguy/cw-omnibus/tree/master/Database/…github.com/commonsguy/cw-omnibus/tree/master/Database/…
  • 我还有一个 StackOverflow 问题,这里是链接 stackoverflow.com/questions/18076109/…,如果您需要更多信息以获取帮助,我可以为您提供帮助(实际上,我融合了 GreenDAO 和 SQLCipher 项目)。感谢您的考虑,我去查看项目并检查与我的项目的差异。
【解决方案2】:

最后的解决方案是使用 SQLCipher,这对所有 Android 都可以正常工作,看看为什么这在我的情况下不起作用,看看这篇文章 Android error with sqlcipher on version android 4.2.2

【讨论】:

    猜你喜欢
    • 2011-03-10
    • 1970-01-01
    • 2019-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-10
    • 1970-01-01
    相关资源
    最近更新 更多