PHP8 密码散列算法 预定义常量
下列常量作为 PHP 核心的一部分总是可用的。
PASSWORD_BCRYPT
(字符串)PASSWORD_BCRYPT
用于创建新密码 使用CRYPT_BLOWFISH
算法的哈希值。这将始终导致使用“$2y$”加密格式的哈希值, 它始终为 60 个字符宽。
支持的选项:
salt
(字符串)- 手动提供在散列密码时使用的盐。 请注意,这将覆盖并阻止自动生成盐。如果省略,则 password_hash() 将生成一个随机盐 每个密码都经过哈希处理。这是预期的操作模式 从 PHP 7.0.0 开始,salt 选项已被弃用。
cost
(整数)- 表示算法成本 应该使用。这些值的示例可以在 crypt() 页面上找到。如果省略,则将使用默认值 。这是一个很好的 基准成本,但您可能需要考虑根据硬件增加基准成本。
10
PASSWORD_BCRYPT_DEFAULT_COST
(int)PASSWORD_ARGON2I
(字符串)PASSWORD_ARGON2I
用于创建新密码 使用 Argon2i 算法的哈希值。支持的选项:
memory_cost
(整数)- 最大内存(以千字节为单位),可能 用于计算 Argon2 哈希值。默认为PASSWORD_ARGON2_DEFAULT_MEMORY_COST
。time_cost
(整数)- 可能的最长时间 take 来计算 Argon2 哈希值。默认为PASSWORD_ARGON2_DEFAULT_TIME_COST
。threads
(整数)- 用于计算的线程数 Argon2 哈希值。默认为PASSWORD_ARGON2_DEFAULT_THREADS
。 仅适用于 libargon2,不适用于 libsodium 实现。
从 PHP 7.2.0 开始可用。
PASSWORD_ARGON2ID
(字符串)PASSWORD_ARGON2ID
用于创建新密码 使用 Argon2id 算法的哈希值。它支持与PASSWORD_ARGON2I
相同的选项。从 PHP 7.3.0 开始可用。
PASSWORD_ARGON2_DEFAULT_MEMORY_COST
(int)尝试时将使用的默认内存量(以字节为单位) 计算哈希值。
从 PHP 7.2.0 开始可用。
PASSWORD_ARGON2_DEFAULT_TIME_COST
(int)尝试计算哈希所花费的默认时间。
从 PHP 7.2.0 开始可用。
PASSWORD_ARGON2_DEFAULT_THREADS
(int)Argon2lib 将使用的默认线程数。 不适用于 libsodium 实现。
从 PHP 7.2.0 开始可用。
PASSWORD_ARGON2_PROVIDER
(字符串)从 PHP 7.4.0 开始可用。
PASSWORD_DEFAULT
(混合))如果未提供算法,则用于哈希的默认算法。 在较新的 PHP 版本中,当更新、更强的哈希时,这可能会发生变化 支持算法。
值得注意的是,随着时间的流逝,这个常数可以(并且很可能会) 改变。因此,您应该知道,结果的长度 哈希可以更改。因此,如果使用
PASSWORD_DEFAULT
则应以可以存储 60 个以上的方式存储生成的哈希值 字符(建议宽度为 255)。此常量的值:
- PHP 5.5.0 -
PASSWORD_BCRYPT
- PHP 5.5.0 -
更新日志
版本 | 说明 |
---|---|
7.4.0 | 密码算法 ID(PASSWORD_BCRYPT 、PASSWORD_ARGON2I 、PASSWORD_ARGON2ID 和 PASSWORD_DEFAULT )的值现在是字符串s。 以前,它们一直是 ints。 |