Как расшифровать «sha512» зашифрованная переменная?

У меня есть этот код:

$password = vancab123;

password_hash(base64_encode( hash('sha512',$password, true) ), PASSWORD_DEFAULT );

База данных хранится значение:

$password = $2y$10$jUa8ZEFBX5lfsBmySUnJFeSSyKwQ1v/emazJZPh8MwJ0g0lLbmjYC;

Моя проблема:

Я использовал это для функции «запомнить меня». Если пользователь использовал эту функцию, его / ее учетные данные (адрес электронной почты и пароль) будут сохранены в течение 7 дней с использованием файла cookie.

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

Как я могу сопоставить длину хешированного пароля с оригинальным / не хэшированным паролем?

0

Решение

И вам не нужно прыгать через все эти обручи, чтобы использовать password_hash и это как проверить, что введенный пароль соответствует ранее хешированному паролю

Смысл HASH в том, что он не может (в разумных временных рамках) быть преобразован обратно в исходное значение. Вместо этого вы должны сравнить его с помощью password_verify () с не хэш-значением, которое вводит пользователь, когда он возвращается и пытается войти в систему, используя тот же пароль.

$password = 'vancab123';

$hashed_pwd = password_hash($password);

// test the hashed password

if ( password_verify($password, $hashed_pwd) ) {
//password entered is OK
} else {
//password entered is WRONG
}

ДОПОЛНЕНИЕ после того, как вы уточнили свой вопрос:

Прочитайте это для функциональности Запомнить меня Каков наилучший способ реализации "Запомни меня" для сайта?

4

Другие решения

Хеш — одностороннее преобразование произвольного значения. Они по своей природе необратимы. В вашем случае вам придется хешировать пароль, предоставленный пользователем, извлечь значение из БД и выполнить сравнение обоих хешированных значений.

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

0

По вопросам рекламы [email protected]