我正在开发一个Android应用程序,它允许用户存储笔记(如evernote,keep等等)但具有“保护”(比如说加密)这些笔记的功能。未经授权的用户。
首先,我会说我不知道加密,所以任何更正,建议,加强等等。它真的很受欢迎。
这是我想要的场景:
用户打开应用程序,使用自己的密码登录,然后他就可以查看这些笔记。
对于我所读过的关于密码检查的所有内容,最好的选择是使用强大的单向加密来散列+ salt。不过阅读更多,我发现BCrypt算法似乎是更好的选择。还找到了java的jBCrypt API,它看起来非常容易使用(顺便说一句,我要检查android集成......)
你推荐哪一个?
如果我使用hash + salt,我应该存储(随机)盐?因为下次用户登录(然后将其哈希)以检查存储在我的数据库中的哈希值时,需要将其附加到用户输入密码。
这是问题之一,另一个是数据加密本身。
我的想法是使用用户密码进行加密,但密码会很短,所以生病需要另外一种盐来防止暴力攻击......
对此有何想法?你知道一个强大的算法来加密一些数据(字符串)基于一个密钥(用户密码+¿盐?)。必须是2路算法,才能恢复数据解密。
最后一个问题:将密码存储在内存中是否安全(当用户登录解密数据时)?我读了很多东西,比如Keystores等等,但是对于这里最安全的选择没有任何线索。
提前致谢
答案 0 :(得分:2)
最好的解决方案是让你不能在如此低的水平上工作。加密是硬,因此,除非您计划成为加密专家,否则请使用现有的“为您做正确的事”的开源库,而不必担心所有这些细节。数据库SQLCipher for Android和BLOB /文件IOCipher是两个这样的例子。