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