Соление - порядок шагов
При солении пароля, какой путь правильный (или самый эффективный)?
A. Сначала хешируйте пароль, а затем хешите пароль с помощью соли:
$password = "passwd";
$salt = "s0merndslt";
$password = sha1($password);
$salty = sha1($password.$salt);
Б. Возьмите пароль и соль и объедините их так:
$password = "passwd";
$salt = "s0merndslt";
$salty = sha1($password.$salt);
Приношу свои извинения, если об этом уже спрашивали, но я не смог найти ответ на эту конкретную часть соления на SO.
1 ответ
На самом деле, в любом случае.
Тем не менее, ваш пример № 1 обеспечивает компромисс времени, который (немного) замедлит поиск паролей.
С появлением графических процессоров просто засолить пароли недостаточно. Поддерживаемый GPU инструмент для перебора паролей, когда ему предоставляется набор паролей для поиска, может создавать короткие пароли за считанные минуты (или даже секунды).
Вот почему инструменты или алгоритмы, такие как bcrypt
или существуют PBKDF#2: они многократно повторяют операцию хеширования, создавая большую рабочую нагрузку, что делает поиск паролей из хеша "неосуществимым" на обычном оборудовании.
Если вы сомневаетесь, не применяйте собственное решение для хэширования паролей! использование bcrypt
или PBKDF#2.