【问题标题】:Android encrypt/decrypt sqlite database 100% secureAndroid 加密/解密 sqlite 数据库 100% 安全
【发布时间】:2015-06-27 01:56:26
【问题描述】:

从安卓安全的角度来看,我是一个刚出生的婴儿。我想做的是加密/解密 Sqlite 数据库。

我已经阅读了多个教程,但似乎没有任何效果。我已经阅读了 Sql Cipher 链接,但在这里我编写了代码,但遇到了以下问题:

Type Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lnet/sqlcipher/AbstractCursor$SelfContentObserver;

我也不需要密码保护的文件。我使用了 Android 库提供的 Cipher 默认类,如下所示:

Cipher c = Cipher.getInstance("RSA");
            c.init(Cipher.ENCRYPT_MODE, privateKey);

但我觉得它不安全。我想它可以被黑客解密。我需要适当的 Sqlite 数据库 100% 加密和解密安全。

【问题讨论】:

  • “但我确实[...]觉得它不安全” -- 你为什么认为它不安全?如果使用得当,它应该是非常安全的 - 如果privateKey没有存储在设备上的任何位置。
  • 需要本地存储数据
  • “我已经通过 Sql Cipher 链接,但在这里我的代码我遇到了问题”——我们无法为您提供更多帮助,例如您的 build.gradle 文件(如果您正在使用安卓工作室)。 “我也不需要密码保护文件”——对密码进行硬编码是不安全的,就像生成密码并将其保存在内部存储中一样。从理论上讲,在相当新的 Android 设备上使用硬件支持的KeyStore 来避免密码 避免硬编码密码是可行的,尽管我还没有尝试过,而且支持的设备相对较少今天它。
  • 您可能不必加密整个数据库(文件)。也许你可以加密那些真正敏感的值。
  • @HannoBinder 实际上我的整个数据库都是敏感的。所以我需要完整的数据库加密。请让我知道您的建议如何实施以及更好的方法。

标签: java android sqlite security encryption


【解决方案1】:

SQL Lite 是一个轻量级的数据库系统。话虽如此,它也很少有可能侵入系统以使其加密或密码保护。以下是我知道的几个:-

  1. SEE:SQLite 加密扩展 (SEE) 是 SQLite 公共域版本的附加组件,它允许应用程序读取和写入加密的数据库文件。支持四种不同的加密算法:

    RC4

    OFB 模式下的 AES-128

    CCM 模式下的 AES-128

    OFB 模式下的 AES-256

  2. WxSQLite:一个 wxWidgets 风格的 c++ 包装器,也实现了 SQLite 的加密。

3.SQLCipher - SQLCipher 占用空间小,性能出色,因此非常适合保护嵌入式应用程序数据库,非常适合移动开发。

我个人根据您的需要推荐 SQLCipher 是最好的选择。我已经尝试过了。强烈推荐开源系统。

【讨论】:

  • 是的,我觉得 SQLCipher 会很好。我还解决了多个 dex 文件问题。现在将检查我现在要去哪里 :)。对不起,我无法投票,因为我的声誉较低 :(
猜你喜欢
  • 2014-08-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多