PHP8 密码散列算法 预定义常量

2024-03-13 11:25 更新

下列常量作为 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
更新日志
版本说明
7.4.0密码算法 ID(PASSWORD_BCRYPTPASSWORD_ARGON2IPASSWORD_ARGON2ID 和 PASSWORD_DEFAULT)的值现在是字符串s。 以前,它们一直是 ints。


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号