Android 在哪里存储密码?
我正在编写一个android密码管理器应用程序,我想将主密码存储在某个地方,但我不知道在哪里。我应该用我选择的硬编码密码加密用户给我的主密码,然后将其存储到数据库中吗?还是我应该做点别的 您不应该存储未加密的密码 对于无法安全加密的密码(因为必须将解密密钥存储在某个位置),应该只存储其不可恢复的散列 这样,当用户向您提供密码时,您可以将密码与哈希值进行比较。如果匹配,您可以使用给定密码解密存储的user:password对Android 在哪里存储密码?,android,database,passwords,Android,Database,Passwords,我正在编写一个android密码管理器应用程序,我想将主密码存储在某个地方,但我不知道在哪里。我应该用我选择的硬编码密码加密用户给我的主密码,然后将其存储到数据库中吗?还是我应该做点别的 您不应该存储未加密的密码 对于无法安全加密的密码(因为必须将解密密钥存储在某个位置),应该只存储其不可恢复的散列 这样,当用户向您提供密码时,您可以将密码与哈希值进行比较。如果匹配,您可以使用给定密码解密存储的user:password对 附言:别忘了给土豆条加盐,还有。不,不,一千次不 如果允许您查看GPLv
附言:别忘了给土豆条加盐,还有。不,不,一千次不 如果允许您查看GPLv2代码,请查看KeePass源代码 主密码转换为密钥(基于密码的密钥派生),该密钥用于加密和解密单个数据段(单个密码) 因此,过程与此类似: 1.关闭任何可以关闭的磁盘交换。向用户询问主密码
- 迭代次数
- 盐
- 加密的“固定”密码,仅用于验证主密码是否正确
- 加密的用户名、URL、注释等
- 加密的个人站点密码
您永远不会存储主密码或其散列。您永远不会将主密码、其散列、甚至生成的主加密密钥与任何其他内容进行比较。您只需获取主密码并将其转换为主加密密钥,然后使用该密钥加密或解密数据-已知数据(“固定”密码)可让您查看该密钥是否给出了预期的结果。当您知道主密码正确时,未知数据(用户输入和关心的所有内容)也会被加密或解密。密码管理器的全部思想不就是不存储主密码吗?使用主密码作为加密密钥存储各个密码。而且主密码从未被存储。我建议你重新阅读他的问题。创建密码管理器时,必须存储原始密码;)除非目标支持哈希,否则哈希不是选项。@WoLpH:您可以使用主密码加密密码。但是,您不必存储主密码。只要存储它的散列就足够了。斯科利:我看到你修改了你原来的答案。现在它是正确的:)+1