java - 在 AES 加密中,迭代次数真的会增加安全性吗?

标签 java encryption aes encryption-symmetric

我使用 AES 和盐字符串来加密我的“密码”,使用我制作的 java 程序。 (使用AES对称加密)

用户设置要加密的消息、盐、迭代和 key 的 16 字节。

如果我将其设置为使用大量加密和解密迭代,例如 255 次,这真的会让我的密码比 1 次迭代更安全吗?

最佳答案

简短的回答是否定的。添加加密迭代没有帮助。这与在底层算法中添加轮次不同,事实上,更多轮次确实有帮助。

更长的答案是您使用了错误的技术来存储密码。您不应该使用对称加密,而应该使用单向哈希函数,例如 bcrypt。

您的解决方案(对称加密)的弱点是您的软件必须可以使用加密 key 才能加密或解密密码。这意味着当攻击者闯入您的系统时,他们将能够获取您的密码数据库和 key ,因此他们解密所有密码将是微不足道的。您应该假设攻击者能够获取您的源代码以及所有数据。

如果您使用哈希函数,则无需担心这种情况。即使攻击者获取了您的源代码和密码数据库,他们仍然无法反转单向哈希(假设您使用良好的哈希 - 再次考虑 bcrypt),因此盗窃您的数据不会危及您用户的密码。

当您考虑安全性时,几乎总是最好使用现有的解决方案(我是否提到过 bcrypt?),而不是自行推出。安全性很难做好,甚至专家也会搞砸。不要编写自己的密码存储系统。使用由专家设计的,更重要的是,已经被众多其他专家分析和攻击的。例如,Bcrypt。

关于java - 在 AES 加密中,迭代次数真的会增加安全性吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11418236/

相关文章:

java - 使用 Java 从 Google Storage 下载文件

ssl - 使用 Play 禁用 SSL 弱密码!框架

python - 直接作为 SQL 查询查询 Sqlalchemy-utils EncrytedType

c# - 大量数据的最佳加密(速度至关重要)?

java - 算法错误 : AES or Rijndael required

Java:是否有任何编码器在数据加密期间不会包含正斜杠?

java - 合并两个不透明图像以获得透明图像

java - 应用程序没有响应

c - 使用 C 中的 Miracle Library 进行 ECC 加密

mysql - AES_ENCRYPT/AES_DECRYPT 中不正确的字符串值错误