我正在使用SQLCipher for Android。我已经完成了所需的所有必要的事情 加载http://sqlcipher.net/sqlcipher-for-android/
中提到的库我发现您设置了密码,即密钥:
SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(databaseFile, "test123", null);
那么你的密码如何从黑客手中获得安全保障?因为它可以从java文件中访问。 ?
我可以存储密码的正确方法吗?
谢谢, 碎粒
答案 0 :(得分:3)
那么你的密码如何从黑客那里获得安全保障?
不是。然而,对密码进行硬编码可以进行简单的演示。
我可以存储密码的正确方法吗?
用户应通过UI为用户的数据库提供密码。然后,用户将密码短语存储在用户的头脑中,或者您可以将用户头部的内容与其他内容结合起来进行轻量级双因素身份验证(例如,配对蓝牙可穿戴设备的MAC地址)。
答案 1 :(得分:2)
我想建议以下方法:
那么密钥库访问如何工作?请参阅blog entry 1和blog entry 2以及相应的github repository。该解决方案适用于Android版本2.1至4.3。
重要提示:
答案 2 :(得分:1)
SQLCipher提供的演示纯粹是为了演示而被忽视的事实。开发人员的想象力可以克服显而易见的问题。稍微不那么明显的是,您不会将密钥存储在私有本地变量中,因为对类文件执行字符串搜索可能会泄露您的密钥,从而减少成功暴力攻击所需的字典。在十六进制编辑器中打开classes.dex并尝试。
这不是您应该关注的.java文件,因为只有您的开发人员应该在那里。这是.class文件。下一级别的努力是混淆的一些努力,但这实际上只限制了不耐烦。
看看这个讨论 https://groups.google.com/forum/#!topic/sqlcipher/OkE0rUwXEb8