我正在使用MD5来散列密码.我应该什么时候跳到下一个?SHA-3?

Joh*_*oth -1 security encryption passwords md5 sha

10月2日,NIST认定SHA-3是新的标准哈希算法.

MD5用户应该开始迁移到SHA-3吗?对于别的东西(见下面为什么不建议使用SHA-3)?bcrypt?

为什么不{MD5,SHA1,SHA256,SHA512,SHA-3等}?

而且,这真的很重要吗?即使你的密码被盐渍了?

Gum*_*mbo 7

不使用MD5进行散列密码的主要原因并不是MD5严重受损甚至被视为损坏.

的确,MD5已知漏洞.但它们都不会对您使用MD5构成严重威胁.因为在你的情况下,唯一的威胁是preimage攻击,攻击者会试图找到已知哈希的原像,例如已知(盐渍)密码哈希的密码.可能已知的针对MD5的原像攻击只是理论上的,并且将努力从2 128降低到2 123.4,这没有什么大的优势.平均为2 64的蛮力攻击仍然更有希望.

不,不使用MD5的主要原因是因为MD5太快了.使用当今价格合理的计算机,您可以生成并测试每秒7190M MD5哈希值.无论是否加盐,所有8个字符长的字母数字字符组合都可以在大约8.5小时内强制使用.

与此相反,使用哈希函数就像bcrypt $2a$每秒只能生成和测试4085个哈希值,因此只有0.0055682%的MD5哈希值.有了bcrypt $2a$你需要1694年为同一尝试.

  • @JohnAssymptoth Speed不是加密哈希的安全性的一部分 - 哈希越快越好.这就是您应该使用密钥派生函数(KDF)的原因.PBKDF2和bcrypt就是这方面的例子.他们可能在内部使用哈希,但他们使用salt和多次迭代来保持暴力攻击的安全边际. (2认同)