используя шифрование phppas blowfish (используется WordPress) - PullRequest
0 голосов
/ 14 марта 2009

Здесь - сайт. Кто бы ни был знаком с этим классом, мой вопрос - это

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

require_once("password.hash.php");
$blowfish = new PasswordHash(8, FALSE);
$blowfish->HashPassword($_POST['password']);

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

Как мне проверить, совпадает ли введенный пользователем пароль с тем, что находится в базе данных ??

Я пробовал это

$blowfish->checkpassword($_POST['password'],"password in db");

, но на экране ничего не отображается.

Я делаю это в тестировании, поэтому поля не экранированы. Я просто хочу посмотреть, работает ли это, но я не получаю результатов. Есть ли альтернатива ??

PS: я не делаю это для WordPress, это просто локально на моем собственном MVC.

Обновление:

Я пробовал это

include("classes/hash.class.php"); 

$sec = new PasswordHash(8, FALSE);
$correct = "sarmenhb";
//pass generated from $sec->HashPassword($correct);
$hash = "\$P$\BeJb51gIUh8Qmb1DAW.Hkt1I4gnm2C1";
$check = $sec->CheckPassword($correct, $hash);

if($check) { print "correct"; }
else { print "incorrect"; }

и когда я его запускаю, вывод продолжает показываться некорректно.

1 Ответ

1 голос
/ 15 марта 2009

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

$hash = '$P$BeJb51gIUh8Qmb1DAW.Hkt1I4gnm2C1';

Я немного сбит с толку, хотя вы говорите, что ничего не появляется при выполнении $ blowfish-> checkpassword ($ _ POST ['password'], "password in db"); конечно, ничто не покажет это, оно вернет true или ложь, но она ничего не напечатает, если не будет добавлено больше кода. Убедитесь, что пароль, хранящийся в базе данных, не экранирован и не изменен в какой-либо форме. Попробуйте напечатать переменную, которую вы используете для этого?

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...