gpt4 book ai didi

php - 在 PHP 中使用 crypt 进行哈希处理

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

最近我正在读一本关于在数据库中存储密码的安全方法的书。本书从 MD5、SHA1 和 CRYPT_BLOWFISH 开始。从我读到的内容中,我了解到存储密码的更安全方法是使用 CRYPT 以及每个用户的随机盐(用户在注册时插入的值,例如用户名),而不将盐存储在数据库中。

所以,假设我生成了盐:

$salt = '$2y$11$';
$salt = $salt.md5($username);

众所周知,MD5 哈希值是一个 32 个字符长的字符串。所以 7+32 = 39 个字符串 = SALT像这样的东西:$2y$11$243dc6440dfd91e35a773035da362f4e

然后我使用crypt()生成哈希:

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

加密哈希值始终会生成 60 个字符的字符串。结果是:$2y$11$243dc6440dfd91e35a773uY4TBuP14hk.KZq4VvOWV8EhT03Vj8Tu

如果黑客获得了数据库的访问权限,他/她将看到上面 60 个字符的字符串的 $2y$11$ 部分。

我的问题是:此信息对黑客有帮助吗(了解哈希方法和成本)?

我应该存储省略该部分的哈希值吗? 243dc6440dfd91e35a773uY4TBuP14hk.KZq4VvOWV8EhT03Vj8Tu

这会让黑客的处境变得更糟吗?

除了这些之外,在黑客获得数据库访问权限后,还有其他有关密码安全的建议吗?

最佳答案

我写了一篇关于 safely storing passwords 的教程,它解释了为什么没有必要隐藏哈希参数。

如果您隐藏此参数,您实际上会添加服务器端 secret (攻击者必须猜测算法和成本因素)。不过,还有更好的方法来添加这样的 secret ,请查看教程的最后部分,了解如何使用服务器端 key 加密哈希值。

关于php - 在 PHP 中使用 crypt 进行哈希处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22238517/

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