可能重复: PHP密码的安全哈希和salt
假设salt是随机的、高熵的、长串的,哈希是sha512或bcrypt,为什么hash(password + perUserSalt)被认为是不够的?
这个问题是在阅读了PHP的新密码散列API RFC之后提出的,其中作者说
散列(密码+ salt) =不太好
发布于 2012-12-29 10:49:29
许多年前,为了保存在数据库中,通常会散列这样的密码,例如:
$hashedPassword = MD5($password . $salt);硬件变得更快了,已知的快速哈希函数(如MD5、SHA-1,还有SHA-512 )可能变得太快了。现在,用普通的硬件计算8 Giga MD5值是可能的,用一本500'000字的整本英语词典,你只需要一毫秒的一小部分!
这就是为什么键派生功能,如BCrypt和PBKDF2发明的原因。它们有一个成本参数并多次重复哈希(成本因子决定迭代的次数)。每次迭代都将使用原始的salt来计算一个新的散列值,这就是为什么您必须将salt单独传递给函数并且不能在此之前连接它的原因:
$hashedPassword = Bcrypt($password, $salt);链接的文章要么要解释当前单个哈希计算是不够的,要么希望在将salt传递给哈希函数之前表明salt不能与密码连接。
https://stackoverflow.com/questions/14080874
复制相似问题