gpt4 book ai didi

php - password_hash 输出的格式是什么?

转载 作者:可可西里 更新时间:2023-10-31 23:48:34 31 4
gpt4 key购买 nike

我知道 PHP 函数,password_hash 在一个字符串中输出算法、成本、salt 和哈希,因此 password_verify 可以检查密码。

来自 PHP page 的示例输出:

$2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a

所以 $2y$ 代表算法,10 代表成本。但是 password_verify 如何将盐与散列分开呢?之后我没有看到任何标识符将两者分开。

最佳答案

用于密码哈希的 bCrypt 版本。Bcrypt 有一个固定长度的盐值。当您使用带有默认算法的 password_hash()/password_verify() 时,PHP 在内部调用的 crypt 函数有一个 16 字节的盐。这是作为自定义 base64 字母表的 22 个字符给出的 A-Za-z/.然后它将字符串解码为字节,因为 22 个 B64 字符编码 16.5 字节,有一个额外的半字节数据未被考虑在内。

对于所有其他哈希,salt 值是一组定义的字节,这些字节当然被编码为 ASCII 安全 b64 并放在 $ 之后。签名,然后验证函数只需通过分隔符 $ 将字符串拆分成多个部分然后去第三组字符得到substr(0,B64_ENCODED_HASH_ALGORITHM_SALT_LEN) .之后它将传递它也从拆分字符串中获得的参数并将它们传递回 password_hash。功能与密码一起检查。

它给你的字符串在大多数情况下是由散列算法的标准定义的,但几乎总是符合

的模式

$<ALGORITHM_ID>$<COST_IN_FORMAT>$<BASE64_ENCODED_SALT><BASE64_ENCODED_HASH>$

关于php - password_hash 输出的格式是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18132751/

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