2014-12-08 3 views
0

кода на моей странице регистра:Соль Пароли не совпадают

$p_salt = rand_string(20); 
$site_salt="subinsblogsalt"; /*Common Salt used for password storing on site.*/ 
$salted_hash = hash('sha256', $password.$site_salt.$p_salt); 

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

if(isset($_POST) && $email!='' && $password!=''){ 
$sql=$dbh->prepare("SELECT id,password,psalt FROM user WHERE email='".$email."'"); 
$sql->execute(array($email)); 
while($r=$sql->fetch()){ 
    $p=$r['password']; 
    $p_salt=$r['psalt']; 
    $id=$r['id']; 
} 
$site_salt="subinsblogsalt";/*Common Salt used for password storing on site. You can't change it. If you want to change it, change it when you register a user.*/ 
$salted_hash = hash('sha256', $password.$site_salt.$p_salt); 

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

+0

Разум, проводящий оба результата вместе с вводом? –

+3

«Общая соль, используемая для хранения паролей на сайте», ужасная практика может также не солить ее вообще –

+0

Возможный дубликат [Безопасный хеш и соль для паролей PHP] (http://stackoverflow.com/questions/401656/secure-hash -and-salt-for-php-пароли) –

ответ

0

Вы создаете и хранение пароля с:

$salted_hash = hash('sha256', $password.$site_salt.$p_salt); 

Но когда вы восстановить пароль из таблицы шифрования для сравнения пароля, который уже encripted.

При сравнении паролей используйте $p_salt.

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