使用crypt()进行更强的密码加密


Stronger Password Encryption using crypt()

所以我对密码加密很感兴趣。我已经创建了下面的脚本,并希望得到一些反馈,看看这是否是验证/保护密码的合法方式,或者它对任何人都没有帮助。欢迎任何反馈:

$pass = "Test!234";
$salt = crypt($pass);
$enc_pass = crypt($pass . $salt);
if(crypt($pass . $salt, $enc_pass) == $enc_pass){
echo "Success!";
}
else{
echo "Fail!";
}

您的机制并没有真正遵循使用crypt 的最佳实践

PHP密码有一种特殊的生成盐的方式,也可以将自己放入不同的模式。你必须知道很多关于如何指定算法的细节,以确保你得到一个真正安全的算法。

一个更好的方法是password_hash,它可以更容易地指定哈希算法。确保使用高成本因素PASSWORD_BCRYPT和随机生成的盐。

此外,无论您使用什么算法,都应该确保为每个用户使用唯一的随机salt。如果使用密码作为salt,则会丢失salt的值(因为攻击者可以很容易地生成彩虹表或使用该方案进行反向查找)。有了足够长度(大于128位)的随机生成的salt,攻击者就无法轻易地对您的密码哈希进行暴力破解,而且即使用户使用相同的密码,每个密码哈希也必须单独进行暴力破解。

阅读文档。

我并不是想否定你的问题,但在这里回答这个问题只是重申文件中所说的内容。

您还应该使用搜索功能(右上角)。关于crypt()函数,有许多问题与此相关。

如果您对crypt()函数有更尖锐的问题,请继续。