# 散列消息摘要框架

# 简介

该扩展提供了一些函数，可用于使用多种散列算法对任意长度的消息进行直接或增量处理，包括生成 HMAC 值以及包括 HKDF 和 PBKDF2 在内的密钥派生。

散列算法大致分为三类，完整算法列表可在 hash_algos() 的文档中找到。

- 校验和算法（例如 `"crc32b"` 或 `"adler32"`）：用于计算校验和，适用于检测传输错误等场景。这类算法通常速度非常快。但其生成的值往往容易被“猜测”或操纵以制造冲突，因此完全不适合用于加密用途。
- 非加密算法（例如 xxHash 系列）：这些算法通常用于计算散列表的散列值，因为它们旨在为任意字符串输入提供良好的分布性。这些算法通常速度较快，但同样不适合用于加密用途。
- 加密算法（例如 SHA-2 系列）：这些算法旨在生成能够反映输入特征但不可猜测且不易发生冲突的散列值。性能通常是次要考虑因素，但现代硬件通常对这些算法提供专门支持，在可用时 PHP 会尝试利用这些支持。 NIST（美国国家标准与技术研究院）的计算机安全资源中心提供了» 关于美国联邦信息处理标准当前批准算法的说明。
  警告

  一些早期的加密算法，例如 `"md4"`、`"md5"` 和 `"sha1"`，已证明容易受到碰撞攻击，通常建议不再将其用于加密应用。

另请参阅关于安全密码散列的常见问题解答，以获取在处理密码时使用散列函数的最佳实践信息。

- 安装/配置
  - 安装
  - 资源类型
- 预定义常量
- HashContext — HashContext 类
  - HashContext::__construct — 私有构造方法以禁止直接实例化
  - HashContext::__debugInfo — Returns debugging information about the hashing context
  - HashContext::__serialize — 序列化 HashContext 对象
  - HashContext::__unserialize — 反序列化 data 参数为 HashContext 对象
- Hash 函数
  - hash — 生成散列值（消息摘要）
  - hash_algos — 返回已注册的散列算法列表
  - hash_copy — 拷贝哈希运算上下文
  - hash_equals — 可防止时序攻击的字符串比较
  - hash_file — 给指定文件的内容生成散列值
  - hash_final — 结束增量散列且返回摘要结果
  - hash_hkdf — Generate a HKDF key derivation of a supplied key input
  - hash_hmac — 使用 HMAC 方法生成带有密钥的散列值
  - hash_hmac_algos — 返回适用于 hash_hmac 的已注册散列算法列表
  - hash_hmac_file — 使用 HMAC 方法和给定文件的内容生成带密钥的散列值
  - hash_init — 初始化增量散列运算上下文
  - hash_pbkdf2 — 生成所提供密码的 PBKDF2 密钥导出
  - hash_update — 向活跃的哈希运算上下文中填充数据
  - hash_update_file — 从文件向活跃的散列运算上下文中填充数据
  - hash_update_stream — 从打开的流向活跃的散列运算上下文中填充数据

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open