Это действительно удивляет меня - это должно быть довольно просто, но я не могу понять, в чем разница.
У меня есть эта функция для генерации соли:
private function _generateSalt($max = 128)
{
$characterList = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!#¤%&/()~";
$i = 0;
$salt = "";
do {
$salt .= $characterList{mt_rand(0,strlen($characterList)-1)};
$i++;
} while ($i < $max);
return $salt;
}
Довольно простой (?)
И попытка создать хеш SHA1 из этого дает мне другой результат, чего я и ожидал:
$salt = $this->_generateSalt();
$password = $salt.$password;
echo sha1($password);
$ пароль - строка, сгенерированная пользовательским вводом.Отраженная хэшированная строка неверна.И я не знаю, почему.
var_dump($password);
после добавления соли дает мне ожидаемый размер строки - скопируйте и вставьте результат в онлайн-сервис SHA1 или хеширование строки через CLI MySQL даст правильный результат.Как будто есть что-то невидимое в переменной $ password, которую я не хочу хэшировать.Но как я могу узнать, почему это происходит?var_dump (), trim () и сравнение результатов никуда меня не привели?