我正在制作一个登录系统,想要将密码进行哈希加密以使其更安全,但每次返回的哈希值都不同,并且甚至无法使用password_verify()进行验证。以下是我的代码:
$password = password_hash($password4, PASSWORD_DEFAULT);
这是我用来验证的代码:
if(password_verify($password4, $dbpassword))
我正在制作一个登录系统,想要将密码进行哈希加密以使其更安全,但每次返回的哈希值都不同,并且甚至无法使用password_verify()进行验证。以下是我的代码:
$password = password_hash($password4, PASSWORD_DEFAULT);
这是我用来验证的代码:
if(password_verify($password4, $dbpassword))
那我们就一步步来
但每次它返回不同的哈希值
这就是设计思路。 password_hash
每次生成一个随机的盐值,这意味着你必须单独破解每个哈希值而不能猜测用于所有哈希值的盐值并获得极大优势。
没有必要使用 MD5
或进行其他哈希操作。如果想要提高 password_hash
的安全性,可以传递更高的成本参数(默认成本为10)。
$password = password_hash($password4, PASSWORD_DEFAULT, ['cost' => 15]);
关于验证
if(password_verify($password4, $dbpassword))
所以$password4
应该是您未经散列处理的密码,$dbpassword
应该是您存储在数据库中的哈希值。
password_hash()
。 - Jay Blanchardpassword_hash()
如果使用正确,会提供随机盐和长哈希值,需要数百年才能破解。 - Jay Blanchard