2013-05-18 2 views
1

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

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

как исправить эту проблему может кто-нибудь мне помочь ???

функция cryptpass в регистре

function cryptPass($input, $rounds = 9) 
{ 
    $salt = ""; 
    $saltChars = array_merge(range('A','Z'), range('a','z'), range('0','9')); 
    for($i = 0; $i<22; $i++) 
    { 
     $salt .=$saltChars[array_rand($saltChars)]; 
    } 
    return crypt($input, sprintf('$2y$%02d$', $rounds) . $salt); 
} 
$hashedpass = cryptPass($pass1);  

склепа функции в логин

function cryptPass($input, $rounds = 9) 
{ 
    $salt = ""; 
    $saltChars = array_merge(range('A','Z'), range('a','z'), range('0','9')); 
    for($i = 0; $i<22; $i++) 
    { 
     $salt .=$saltChars[array_rand($saltChars)]; 
    } 
    return crypt($input, sprintf('$2y$%02d$', $rounds) . $salt); 
} 
$hashedpass = cryptPass($pass); 
echo $hashedpass; 

ответ

0

Соль вы добавляете к паролю перед тем хеширования должен быть одинаковым каждый раз .

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

$salt = '@#$JASasdjbh&*()'; 

И, конечно же, вы должны изменить эти символы перед тем, как использовать их в своем собственном сценарии.

+0

Это не так. соль должна быть рандомизирована для каждого отдельного хэша. http://en.wikipedia.org/wiki/Salt_(cryptography) 'Новая соль генерируется случайным образом для каждого пароля' – rbedger

+0

Конечно, вы можете создать новую соль для каждого пароля, но вы ДОЛЖНЫ использовать ту же соль первоначально используемый для хранения пароля при хэшировании значения, которое вы сравниваете. В противном случае хеши будут разными, и проверка не будет выполнена правильно. –

+0

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

1

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

Смежные вопросы