【发布时间】:2011-10-18 04:51:42
【问题描述】:
加密密码的最安全的单向加密算法是什么?
MD5 和 SHA (1..512) 经常使用,但它们的设计目的是提高速度,这对于防止对加密密码的暴力攻击是不利的。
算法不应该太奇特,以便它可以与常见的编程语言/运行时一起使用,如 Java、.NET 或 Python。
【问题讨论】:
-
无论用什么方法,都需要好盐。我认为 SHA 已经足够好了,在密码这样的小数据集上,哈希方法不会那么重要。
-
注意:MD5 和 SHA 是不是加密算法,而是hash算法。已知 IIRC 至少 MD5 容易受到字典攻击。
-
这实际上是之前关于 security.SE 的问题的副本:security.stackexchange.com/q/4789/485 - 我建议迁移并关闭为副本。
-
@Thorsten:任何哈希算法都几乎同样容易受到字典攻击(字典基于密码选择,而不是正确的哈希算法)。对 MD5 的冲突攻击会影响某些用途(例如,数字签名),但不会影响密码。同时,碰撞攻击的存在表明存在足够的弱点,通常最好避免使用 MD5(可能除了在没有攻击者的情况下验证文件传输之类的事情)。
-
“单向加密”称为“哈希”。投赞成票只是因为任何其他寻找正确术语的人都会被帮助找到它。
标签: security encryption hash passwords password-protection