如果密码散列可以轻松解密,有什么用?

Bor*_*iev -1 php mysql encryption hash

密码是mySQL数据库应该以散列形式保存

echo password_hash('test', PASSWORD_BCRYPT); 
Run Code Online (Sandbox Code Playgroud)

给我们

$2y$10$8PxsFGPbGtgYb44GRPL84ev2T0xR0LXMSSKm7cuSBUbAU114mosFG 
Run Code Online (Sandbox Code Playgroud)

要么

$2y$10$E.q3bVE9EE2ce2VaKPJgtuwEMRZxpTYiQR6Mw2dmLGqeKx/PsQY42 
Run Code Online (Sandbox Code Playgroud)

要么 ...

但是所有这些$2y$10. . .字符串都很容易被解密回test使用password_verify.

假设某人可以访问哈希密码,那么她将能够使用password_verify ?解密它们?一旦有人拥有字符串,$2y$10$E.q3bVE9EE2ce2VaKPJgtuwEMRZxpTYiQR6Mw2dmLGqeKx/PsQY42他或她就可以轻松地将其转换回纯文本,对吧?那么为什么要使用密码呢?

Pao*_*olo 6

这个说法

但所有这些都是2美元10美元...使用password_verify可以轻松地将字符串解密回测试.

不是真的.

因为password_hash()是单向散列.

这意味着(实际上)没有办法从散列字符串返回到原始字符串.

password_verify() 不解密哈希(因为它不可能).更简单的是,它会对要验证的密码进行哈希处理,并检查生成的哈希值是否与提供的哈希值匹配.