我使用 AES 和盐字符串来加密我的“密码”,使用我制作的 java 程序。 (使用AES对称加密)
用户设置要加密的消息、盐、迭代和 key 的 16 字节。
如果我将其设置为使用大量加密和解密迭代,例如 255 次,这真的会让我的密码比 1 次迭代更安全吗?
最佳答案
简短的回答是否定的。添加加密迭代没有帮助。这与在底层算法中添加轮次不同,事实上,更多轮次确实有帮助。
更长的答案是您使用了错误的技术来存储密码。您不应该使用对称加密,而应该使用单向哈希函数,例如 bcrypt。
您的解决方案(对称加密)的弱点是您的软件必须可以使用加密 key 才能加密或解密密码。这意味着当攻击者闯入您的系统时,他们将能够获取您的密码数据库和 key ,因此他们解密所有密码将是微不足道的。您应该假设攻击者能够获取您的源代码以及所有数据。
如果您使用哈希函数,则无需担心这种情况。即使攻击者获取了您的源代码和密码数据库,他们仍然无法反转单向哈希(假设您使用良好的哈希 - 再次考虑 bcrypt),因此盗窃您的数据不会危及您用户的密码。
当您考虑安全性时,几乎总是最好使用现有的解决方案(我是否提到过 bcrypt?),而不是自行推出。安全性很难做好,甚至专家也会搞砸。不要编写自己的密码存储系统。使用由专家设计的,更重要的是,已经被众多其他专家分析和攻击的。例如,Bcrypt。
关于java - 在 AES 加密中,迭代次数真的会增加安全性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11418236/