可以打破sha1(md5('密码'))密码?

时间:2011-04-23 16:24:31

标签: php cryptography md5 sha1 cryptographic-hash-function

这是一个问题:可以打破sha1(md5('密码'))密码吗?

或者它在sha1中的md5或md5中的sha1更好?

谢谢!

6 个答案:

答案 0 :(得分:11)

多次哈希不会进一步保护您的密码。只需使用安全的盐渍哈希。

结帐http://php.net/hash

答案 1 :(得分:3)

根据Wikipedia's MD5 article

  

MD5哈希函数的安全性严重受损。

因此,将MD5添加到SHA1不会让您的东西更安全。我甚至会说哈希已经哈希过的东西也不会让它更安全。

许多人用来存储密码的常用机制是对哈希字符串的盐描述。

答案 2 :(得分:3)

由于没有人回答原来的问题:是的,这是可能的。

关于第二个问题:与仅使用sha1相比,md5(sha1('password'))实际上会降低安全性,因为散列大小会减少。反过来也无济于事。

始终使用salting

答案 3 :(得分:1)

md5将为您提供32个字符的字符串。
sha1会给你一个40个字符的小贴士。

但是,在这两种情况下,这些字符串只包含十六进制字符,这意味着每个位置只有16个可能的值:0-9和a-f


我不认为使用md5 + sha1 (无论你称之为哪种顺序)是个好主意:只使用密码中的一个可能会更安全。

考虑一下:

  • 您的密码至少可以包含8个字符
  • 这8个字符中的每一个都可以是字母(大写或小写),一个数字,一个特殊字符;这意味着每个职位至少有75种可能性

你不认为这会产生比32个十六进制字符更多的可能组合吗?


只需使用一个散列函数,然后使用salt密码。

答案 4 :(得分:0)

将哈希函数包含在彼此内部不会使您的哈希更加安全。仍然可以构建彩虹表,以允许攻击者读取数据库中的大量密码。

这当然是假设他们可以访问您的代码,但他们可能会这样做,因为在这个阶段他们可以访问您的数据库。

答案 5 :(得分:0)

使用两个哈希不会使您的算法安全;哈希一次,使用最好的(有更多位)算法并添加一些盐。例如:

sha1('This is some salt' . $string . 'othersalt')

这对彩虹表更安全。我的意思是:不完全安全,因为攻击者可以构建一个彩虹表,但它是更安全因为普通的彩虹表不起作用。另请注意,两种算法都已被破解:我强烈建议您使用SHA-2,例如: sha-128或sha-256。他们仍然没有被打破 最后一件事:总是对彩虹表的盐哈希。总是使用最好的哈希:SHA-3即将推出,你可能想要使用它。