-1

我正在开发一个 Android 应用程序,它允许用户存储笔记(如 evernote、keep 等),但能够“保护”(比如说加密)其中一些笔记不被未经授权的人查看用户。

首先我要说我对加密一无所知,所以任何更正、建议、增强等。它真的很受欢迎。

这是我想要的场景:

用户打开应用程序,使用自己的密码登录,然后他可以查看这些笔记。

对于我所读过的有关密码检查的所有内容,最好的选择是使用强大的单向加密来散列+盐。但是阅读更多内容后,我发现 BCrypt 算法似乎是更好的选择。还发现了 jBCrypt API for java,看起来很容易使用(顺便检查一下android集成......)

您推荐其中哪些?

如果我使用哈希+盐,我应该在哪里存储(随机)盐?因为下次用户登录时需要将其附加到用户输入密码(然后对其进行哈希处理)以检查存储在我的数据库中的哈希值。

这是其中一个问题,另一个问题来自数据加密本身。

我的想法是使用用户密码进行加密,但是密码会很短,所以需要另一种盐来防止暴力攻击......

对此有任何想法吗?您知道基于密钥(用户密码 + ¿salt)加密某些数据(字符串)的强大算法吗?必须是2路算法,才能恢复数据解密。

最后一个问题:将密码存储在内存中是否安全(当用户登录以解密数据时)?我读过很多东西,如 Keystores 等,但不知道这里最安全的选择。

提前致谢

4

1 回答 1

2

最好的解决方案是让你不要在这么低的水平上工作。加密很难,所以除非你打算成为一名加密专家,否则请使用现有的为你“做正确的事”的开源库,而不必费力了解所有这些细节。用于数据库的 Android的SQLCipher和用于 BLOB/文件的 IOCipher 就是两个这样的例子。

于 2013-09-06T12:25:18.627 回答