Я долгое время использовал несоленый 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;
Сначала я хотел использовать вторую версию (добавить один раз), но потом нашел несколько сценариев, добавляющих соль каждый раз.
Итак, мне интересно, добавляет ли это каждый раз добавление силы в хэш.Например, возможно ли, что злоумышленник нашел какой-нибудь умный способ создать функцию 100хSha512, которая была бы намного быстрее, чем простое выполнение sha512 в 100 раз?