【发布时间】:2012-12-12 02:16:33
【问题描述】:
我目前正在使用 Java 创建应用程序,我在谷歌上搜索了 Java 密码加密,但结果如此巨大,我感到不知所措。如何使用 Java 加密和解密密码?加密和解密密码的最佳实践是什么?我猜 MD5 不是一种方法,因为它是一种单向哈希。我使用 struts2 作为我的框架,想知道他们是否提供密码加密
【问题讨论】:
-
我强烈建议您使用单向哈希算法,而不是可以解密的。由于各种安全原因,一种方式的哈希是最好的。
-
您不会加密和解密密码,因为它是双向的。你会对它们加盐和散列,正是因为它是单向的,因此没有人可以通过散列密码回到原始密码。使用bcrypt。
-
您真的需要加密密码吗?在您的场景中不可能散列?你的钥匙从哪里来?用户输入的主密码?
-
MD5 不是一个安全的单向哈希 (en.wikipedia.org/wiki/MD5)
-
@MrSmith42 MD5 的单向性(第一个原像)还是相当强的。冲突很弱,但不适用于密码散列。虽然最好使用其他东西,但 MD5 的加密弱点并不是密码散列的直接关注点。选择一个好的强化方案比选择 SHA-2 而不是 MD5 重要得多。
标签: java security encryption passwords password-encryption