У меня есть следующий пароль:password_hash и password_verify возвращает ложные
123
Теперь я хэширования, что и он возвращает следующий ключ:
$2y$10$rSq.2M7Ikc.QPhVtYlp1Nu8HI.Eq5fUgVWn25J
Теперь я пытаюсь проверить тот же ключ, используя:
return password_verify(123, $2y$10$rSq.2M7Ikc.QPhVtYlp1Nu8HI.Eq5fUgVWn25J);
однако это возвращает false.
Может ли кто-нибудь сказать мне, почему?
Update
это мой полный код:
<?php
/**
* Created by JetBrains PhpStorm.
* User: Marc
* Date: 14-12-13
* Time: 13:56
* To change this template use File | Settings | File Templates.
*/
class Security {
/**
* @param $string
* @return mixed
*/
public function encrypt($string) {
return password_hash($string, PASSWORD_DEFAULT);
}
/**
* @param $string
* @param $hash
* @return mixed
*/
public function validate($string, $hash) {
return password_verify($string, $hash);
}
}
$hash = $this->db->template("SELECT password FROM User WHERE username = '".$username."'", READ_FROM_QUERY)['password'];
$validate = $this->getSecurity()->validate($password, $hash);
Я пытаюсь вставить следующую строку:
Helloworld
Однако $validate = false
;
Пароль должен возвращается к $2y$10$VbicsFaGN9d3ggQTNYIto.Bp6x/rbjpsBe2kneEhJ9oP2KdPsZ7hy
Если я попробовать перефразировать, он возвращает то же значение Су они должны быть равны друг другу, так почему не возвращает ложь?! ??!
Возвращает ложь, а
$validate = $this->getSecurity()->validate((string)$password, (string)$hash);
Попробуйте передать пароль password_verify() как строку –
Как вы создали этот хеш? 'password_verify()' работает только с паролем 'password_hash()' hashed passwords?!? – loveNoHate
Хорошо, давайте попробуем и перефразируем мой вопрос –