gpt4 book ai didi

php - 登录时从数据库中调用带盐的河豚加密

转载 作者:行者123 更新时间:2023-11-29 10:20:16 29 4
gpt4 key购买 nike

我显然是河豚加密新手,所以才问这个问题。我相信已经弄清楚了等式的一侧,但无法弄清楚一旦哈希值存在于数据库中如何登录。我有以下用于在注册时加密密码的方法:

    $blowfish_hash = "$2y$10$";
$salt_length = 22;

$salt = Generate_Salt($salt_length);
$hash_combined = $blowfish_hash . $salt;

$hash = crypt($password, $hash_combined);

$password = $hash;

Generate_Salt()函数如下:

function Generate_Salt($length) {

$unique_rndm_str = md5(uniqid(mt_rand(), true));
$base64_string = base64_encode($unique_rndm_str);

$mod_Base64_str = str_replace('+', '.', $base64_string);
$salt = substr($mod_Base64_str, 0, $length);

return $salt;
}

一旦我注册,我就会得到这个漂亮的长哈希 - 太棒了!但是,当我登录时,我不确定如何调用哈希来检查给定的密码: $_POST['log_password'];

使用md5很简单,我只是这样加密$password = md5($password);并以这种方式调用$password = md5($_POST['log_password']) ; 然而,阅读后我意识到这不是一种安全的方法。

我已经研究了几个小时了,有人可以帮我解释一下吗?任何帮助,将不胜感激。

ep

最佳答案

这比你想象的要容易得多。只需使用函数 password_hash()相反,它将调用 crypt() 函数并处理安全盐的生成。

// Hash a new password for storing in the database.
// The function automatically generates a cryptographically safe salt.
$hashToStoreInDb = password_hash($_POST['password'], PASSWORD_DEFAULT);

// Check if the hash of the entered login password, matches the stored hash.
// The salt and the cost factor will be extracted from $existingHashFromDb.
$isPasswordCorrect = password_verify($_POST['password'], $existingHashFromDb);

关于php - 登录时从数据库中调用带盐的河豚加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49404502/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com