Соляные пароли не совпадают

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
    «Обычная соль, используемая для хранения пароля на сайте» - ужасная практика, а может и вовсе не солить
Показать ещё 3 комментария
Теги:

1 ответ

0

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

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

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню