gpt4 book ai didi

PHP : Decrypt password from hash

转载 作者:行者123 更新时间:2023-12-01 19:38:56 34 4
gpt4 key购买 nike

因此,我使用以下代码成功将密码加密为密码哈希:

class PassHash 
{

// blowfish
private static $algo = '$2a';
// cost parameter
private static $cost = '$10';

// mainly for internal use
public static function unique_salt()
{
return substr(sha1(mt_rand()), 0, 22);
}

// this will be used to generate a hash
public static function hash($password)
{

return crypt($password, self::$algo .
self::$cost .
'$' . self::unique_salt());
}

// this will be used to compare a password against a hash
public static function check_password($hash, $password)
{
$full_salt = substr($hash, 0, 29);
$new_hash = crypt($password, $full_salt);
return ($hash == $new_hash);
}

}

这就是我加密密码的方式:

 $password_hash = PassHash::hash($user->getPasswordHash());

但是当我尝试在正常模式下显示密码时,我遇到了一个小问题。

从该哈希中解密密码的最佳方法是什么?

最佳答案

你无法解密哈希值(嗯......技术上你可以,但你不应该)这就是哈希值的用途(不被解密)。您需要使用与存储的哈希值相同的哈希算法对收到的密码进行加密(哈希),并将哈希值相互进行比较。

$password_hash = PassHash::hash($user->getPasswordHash());
if($stored_password === $password_hash){
//The passwords are the same
}

总而言之,您不想让任何人(甚至您自己)知道用户的密码是什么(或与此相关的哈希值)。用户会知道,因为他输入了它并记住了它(无论如何希望如此)。没有其他人与查看用户的密码/哈希值有任何关系。让用户以外的任何人看到/知道密码/哈希是一个严重的安全问题。

另外一点:您应该使用默认的哈希实现。使用自己的哈希算法总是比真正经过尝试和测试的方法更糟糕。我不确定您使用的 PHP 版本,但从 PHP 5.5 开始您可以使用 password_hash() 。更多信息请查看this问题。

关于PHP : Decrypt password from hash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28114384/

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