Вопрос

Предполагая, что у нас есть соль, которая находится в базе данных и которая была сгенерирована следующим образом

$ salt = time ();

В чем разница между этими двумя строками?

$pass1 = hash('sha1', $password . $salt);

$pass2 = hash_hmac('sha1', $password, $salt);

Они не выдают одинаковый результат. Первая функция hash принимает 2 параметра, а для hash_hmac требуется 3 параметра. Поэтому вы можете подумать, что мы можем получить этот третий дополнительный параметр, используя $ salt отдельно (для выполнения третьего параметра), а не конкатенировать его с паролем ( $ password. $ Salt <). / code>), как мы это делали в строке 2. Но это не так просто, результаты 2 разные. Зачем? Что здесь происходит?

Это было полезно?

Решение

Потому что HMAC SHA-1 отличается от SHA-1 с объединенным сообщением и ключом. HMAC больше похож на sha1 ($ salt. Sha1 ($ salt. $ Password)) , но не совсем так. В Википедии есть хорошее описание HMAC .

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top