多次哈希迭代:每次都附加盐?
我已经使用无盐的md5 / sha1很长时间了,但是由于这种方法并不真正安全(并且随着时间的推移变得越来越不安全),我决定切换到盐渍sha512。此外,我想通过使用多次迭代(例如100)来减慢哈希的生成速度。
我的问题是,我是应该在每次迭代时都附加盐,还是在开始时只附加一次盐。以下是两个可能的代码:
每次追加:
// some nice big salt
$salt = hash($algorithm, $salt);
// apply $algorithm $runs times for slowdown
while ($runs--) {
$string = hash($algorithm, $string . $salt, $raw);
}
return $string;
追加一次:
// add some nice big salt
$string .= hash($algorithm, $salt);
// apply $algorithm $runs times for slowdown
while ($runs--) {
$string = hash($algorithm, $string, $raw);
}
return $string;
我首先想使用第二个版本(附加一次),但后来发现一些脚本每次都附加盐。
因此,我想知道每次添加它是否都会为哈希值增加一些强度。例如,攻击者是否有可能找到一些聪明的方法来创建一个100timesSha512函数,这比简单地执行sha512 100次要快得多?