【发布时间】: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