我需要检查密码是否正确,但它已在数据库中进行哈希处理
I need to check if the password is correct but it is hashed in the database
我需要为将在站点外运行的应用程序创建一个登录系统,我需要它连接到标准 WordPress 数据库,但数据库中的密码受哈希保护。
请问是否可以取消Hash编码,或者有没有php脚本可以不经过Hash解码得到用户的原始密码
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully.<br>";
$sql = "SELECT user_pass FROM testeUsers WHERE user_email = '".$loginUser . "'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
if($row["user_pass"]== $loginPass){
echo "Login Sucess";
//colocar as funções aqui
}
else{
echo "wrong password";
}
}
} else {
echo "User not found";
}
问题在于此 PHP 代码采用了数据库中 user_pass 字段中写入的文本,并且 user_pass 不是用户的真实密码,因为它在哈希,所以即使他的密码正确,我的用户也永远无法登录系统。
不,散列的全部要点是 one-way function - 也就是说,您不能轻易地反转它。如果你可以轻易地逆转它,想必黑客也可以轻易地逆转它并且散列将毫无意义。
为了比较密码,您需要将用户输入的密码与数据库中使用的盐进行哈希运算,然后再进行比较。我相信 PHP 中有执行此操作的标准函数,但说实话我不记得它的确切名称了。
我需要为将在站点外运行的应用程序创建一个登录系统,我需要它连接到标准 WordPress 数据库,但数据库中的密码受哈希保护。
请问是否可以取消Hash编码,或者有没有php脚本可以不经过Hash解码得到用户的原始密码
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully.<br>";
$sql = "SELECT user_pass FROM testeUsers WHERE user_email = '".$loginUser . "'";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
if($row["user_pass"]== $loginPass){
echo "Login Sucess";
//colocar as funções aqui
}
else{
echo "wrong password";
}
}
} else {
echo "User not found";
}
问题在于此 PHP 代码采用了数据库中 user_pass 字段中写入的文本,并且 user_pass 不是用户的真实密码,因为它在哈希,所以即使他的密码正确,我的用户也永远无法登录系统。
不,散列的全部要点是 one-way function - 也就是说,您不能轻易地反转它。如果你可以轻易地逆转它,想必黑客也可以轻易地逆转它并且散列将毫无意义。
为了比较密码,您需要将用户输入的密码与数据库中使用的盐进行哈希运算,然后再进行比较。我相信 PHP 中有执行此操作的标准函数,但说实话我不记得它的确切名称了。