以下常量始终作为 PHP 核心的一部分可用。
PASSWORD_BCRYPT
(string)
PASSWORD_BCRYPT
用于使用CRYPT_BLOWFISH
算法创建新的密码哈希。
这将始终导致使用 "$2y$" crypt 格式的哈希,其宽度始终为 60 个字符。
支持的选项
salt
(string) - 手动提供用于对密码进行哈希的盐。请注意,这将覆盖并阻止自动生成盐。
如果省略,password_hash() 将为每个哈希密码自动生成随机盐。这是预期的操作模式,从 PHP 7.0.0 开始,盐选项已弃用。
cost
(int) - 表示应使用的算法成本。可以在 crypt() 页面上找到这些值的示例。
如果省略,将使用默认值 10
。这是一个良好的基线成本,但您可能需要根据您的硬件考虑将其增加。
PASSWORD_BCRYPT_DEFAULT_COST
(int)
PASSWORD_ARGON2I
(string)
PASSWORD_ARGON2I
用于使用 Argon2i 算法创建新的密码哈希。
支持的选项
memory_cost
(int) - 用于计算 Argon2 哈希的最大内存(以 kibibytes 为单位)。默认为PASSWORD_ARGON2_DEFAULT_MEMORY_COST
。
time_cost
(int) - 计算 Argon2 哈希可能花费的最大时间。默认为PASSWORD_ARGON2_DEFAULT_TIME_COST
。
threads
(int) - 用于计算 Argon2 哈希的线程数。默认为PASSWORD_ARGON2_DEFAULT_THREADS
。仅在 libargon2 中可用,在 libsodium 实现中不可用。
从 PHP 7.2.0 开始可用。
PASSWORD_ARGON2ID
(string)
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
(string)
从 PHP 7.4.0 开始可用。
PASSWORD_DEFAULT
(mixed)如果没有提供算法,则用于哈希的默认算法。当支持更新、更强大的哈希算法时,这可能会在较新的 PHP 版本中发生变化。
值得注意的是,随着时间的推移,此常量可能会(而且很可能)发生变化。因此,您应该知道生成的哈希的长度可能会发生变化。因此,如果您使用PASSWORD_DEFAULT
,您应该以可以存储超过 60 个字符(推荐宽度为 255 个字符)的方式存储生成的哈希。
此常量的值
PASSWORD_BCRYPT
版本 | 描述 |
---|---|
7.4.0 | 密码算法 ID(PASSWORD_BCRYPT 、PASSWORD_ARGON2I 、PASSWORD_ARGON2ID 和 PASSWORD_DEFAULT )的值现在为 string。以前,它们是 int。 |