用salt解密密码

时间:2019-07-02 20:13:53

标签: php salt password-encryption

代码这里是加密密码,但是我如何解密或比较它以登录laravel

使用的代码

   getsql(md5($_POST['regpassword'] . SALT), "default"),

2 个答案:

答案 0 :(得分:0)

md5正在散列,并且不可逆,您无法解密,只能使用相同的算法对散列的密码进行散列,然后对结果进行比较以确保它是正确的密码

答案 1 :(得分:0)

验证密码时,您可以执行以下操作:

$hashed = md5($_POST['password'] . SALT);
$sql = "SELECT * FROM users WHERE username = '{$_POST['username']}' AND password = '$hashed'";

我已对此进行了简化,以显示如何检查密码的重要部分,实际上,您应该使用准备好的语句来防止SQL注入。

另一种方法是从数据库中获取哈希密码,然后将其与给定的哈希密码加盐分密码进行比较:

$hashed = md5($_POST['password'] . SALT);
$sql = "SELECT password FROM users WHERE username = '{$_POST['username']}'";
$result = mysqli_query($conn, $sql);
$row = mysqli_fetch_assoc($result);
if ($row && $hashed == $row['password']) {
    // user is validated
}

如果您将存储密码的方法固定为使用比静态SALT更合理的方法,则可以轻松更新第二种方法。可以使用$hashed == $row['password']代替password_verify($_POST['password'], $row['password'])