我尝试使用AES算法为Android开发加密应用程序,我应该在哪里存储密钥。我的想法是用户提供密码并生成密钥。我可以提前做这个过程更安全。谢谢
答案 0 :(得分:3)
我尝试使用AES算法为Android开发加密应用程序,我应该在哪里存储密钥。我们的想法是用户提供密码并生成密钥
然后你不存储密钥。当用户提供密码时 - 无论是初始加密还是以后解密 - 您都可以从密码生成密钥。
答案 1 :(得分:1)
如@CommonWare所示,您应该从密码生成密钥。正确的方法是使用PBKDF2算法和salt(*)。还有其他好的算法,如bcrypt和scrypt,但PBKDF2是最成熟的标准。对于Android实施,请参阅PBKDF2 function in Android。
(*) salt 是一个随机数,是PBKDF2算法的一部分。这种盐不是秘密;你可以任何你喜欢的方式存储它。但是你需要跟踪它以便以后解密。通常,当您存储盐时,您会将盐与CBC使用的随机IV一起添加到密文中。