password_verify всегда неверный пароль, хотя пароль правильный

Я понятия не имею, в чем проблема в моем коде
hash.php (введите пароль bycryp)

**<?php
$con = new mysqli("localhost", "root", "", "hast") or die(mysqli_error());
if (array_key_exists("f5", $_GET)) {
$w5 = $_GET['f5'];//pass
}
if (array_key_exists("f6", $_GET)) {
$w6 = $_GET['f6'];//pass
}
$salt = md5(uniqid(rand()));
$options = [
'cost' =>11,
'salt' => $salt
];
$hash_password = password_hash($w6, PASSWORD_BCRYPT, $options)."\n";
$sql = mysqli_query($con, "INSERT INTO `pass`(`nama`, `hash_password`, `salt`) VALUES ('$w5','$hash_password','$salt')")or die(mysqli_error($con));
if ($sql) {
echo $hash_password;
} else {
echo "gagal";
}
?>**

hashlog.php

**<?php
$con = new mysqli("localhost", "root", "", "hast") or die(mysqli_error());
if (array_key_exists("f5", $_GET)) {
$w5 = $_GET['f5'];//user
}
if (array_key_exists("f6", $_GET)) {
$w6 = $_GET['f6'];//pass
}
$sql = mysqli_query($con, "select hash_password from pass where nama='$w5'")or die(mysqli_error($con));
$row = mysqli_fetch_assoc($sql);
$hash = $row['hash_password'];
$hash = $row['hash_password'];
//$hash ='$2y$11$0be5c43957cd3df608521u4PiYrUUyK/dQRSlc/g5UVdDdKk1WChy';
if (password_verify($w6, $hash)) {
echo 'Password is valid!';
} else {
echo 'Invalid password.';
}
?>**

в моем случае всегда неверный пароль, хотя пароль правильный
Помогите мне, пожалуйста

0

Решение

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

$salt = mcrypt_create_iv(22, MCRYPT_DEV_URANDOM);

Кроме того, я думаю, что ваша проблема является дополнением \n по хешированному паролю; Вы должны удалить это:

$hash_password = password_hash($w6, PASSWORD_BCRYPT, $options)."\n"; //remove this "\n"
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]