这就是问题:有可能破解 sha1(md5('password')) 密码吗?
或者 sha1 中的 md5 或 md5 中的 sha1 如何更好?
谢谢!
这就是问题:有可能破解 sha1(md5('password')) 密码吗?
或者 sha1 中的 md5 或 md5 中的 sha1 如何更好?
谢谢!
多重哈希不会进一步保护您的密码。只需使用安全的盐渍哈希即可。
根据维基百科的 MD5 文章:
" MD5 哈希函数的安全性受到严重损害。 "
因此,将 MD5 添加到 SHA1 不会让您的东西更安全。我什至会说散列一个已经散列的东西也不会使它更安全。
许多人用于存储密码的常见机制是散列字符串上的盐加密。
由于没有人回答最初的问题:是的,这是可能的。
至于第二个问题:与仅使用 sha1 相比, md5(sha1('password')) 实际上会降低安全性,因为散列大小会减小。而反过来也无济于事。
总是用盐腌!
md5
会给你一个 32 个字符的字符串。
sha1
会给你一个40个字符的srings。
但是,在这两种情况下,这些字符串将只包含十六进制字符,这意味着每个位置只有 16 个可能的值:0-9 和 af
我不认为使用 md5+sha1 (无论您以哪种顺序调用它们)是一个好主意:仅在密码中使用其中一个可能会更安全。
只需考虑:
您不认为这会比 32 个十六进制字符产生更多可能的组合吗?
只需使用一种散列函数,并加盐密码。
将散列函数相互包装不会使您的散列更加安全。仍然可以构建彩虹表以允许攻击者读取数据库中的大量密码。
这当然是假设他们可以访问您的代码,但他们可能会这样做,因为在这个阶段他们可以访问您的数据库。
使用两个散列并不能使您的算法安全;散列一次,使用最好的(更多位)算法并添加一些盐。例如:
sha1('This is some salt' . $string . 'othersalt')
这对彩虹表来说要安全得多。我的意思是:不完全安全,因为攻击者可以建立一个彩虹表,但它更安全,因为普通的彩虹表不起作用。另请注意,这两种算法都已被破解:我强烈建议您使用 SHA-2,例如 sha-128 或 sha-256。他们仍然没有被打破。
最后一件事:总是对彩虹表进行盐哈希。始终使用最好的哈希值:SHA-3 即将到来,您可能想要使用它。