Sha1 генерирует разные хэши из одной и той же строки в php при отправке из другой формы - PullRequest
0 голосов
/ 07 марта 2011

Итак, у меня действительно странная проблема. У меня есть сценарий входа, и вы вводите имя пользователя и пароль. После того, как пароль опубликован, я добавляю его в php-функцию sha1 () и сравниваю его с версией sha1 в базе данных. Если они совпадают, он входит в систему. Эта часть работает нормально. Теперь у меня есть такая же функциональность для мобильной версии, но она использует другую форму и другой URL. После того, как вы введете пароль, я сделаю все те же самые шаги, но отправленный хеш sha1 отличается от хеша sha1 в базе данных. Я знаю, что каждый раз вводил их одинаково, поэтому не понимаю, почему эти два значения будут разными. Это верно только для некоторой комбинации имени пользователя и пароля. Я что-то упустил ??

Ответы [ 2 ]

4 голосов
/ 07 марта 2011

Нет причин для того, чтобы один и тот же текст производил разные значения sha1.

Я предлагаю вам записать действительные значения пароля перед генерацией sha1 для устранения проблемы.

Я подозреваю, что вы можете вводить пароли с другим регистром или по какой-либо причине дополнены пробелами или другими символами.

0 голосов
/ 13 марта 2017

У меня была эта проблема, и я не мог отследить ее.Оказывается, что если вы введете входную строку в одинарные кавычки, вы получите другие результаты, чем в двойных кавычках.

Также обратите внимание на различные проблемы кодирования

Пример

$str = "test=!$E0";
$enc = mb_detect_encoding($str, "UTF-8,ISO-8859-1");
echo strtoupper(sha1(iconv($enc, "UTF-8",$str)));

04CDF156D64CC4B51E1DC7E5A852F9177102EBE7

$str = 'test=!$E0';
$enc = mb_detect_encoding($str, "UTF-8,ISO-8859-1");
echo strtoupper(sha1(iconv($enc, "UTF-8",$str)));

44372F3C82A4AAD84748AE5ECB8F6C7313DA6C65

Очень раздражает

...