# SP 800-56C HKDF Extract 与 Expand 演示

逐步展示协议密钥派生中的 HKDF Extract+Expand HMAC 过程，包括 PRK、T(n) 和 OKM。

> 标准页面: https://elysiatools.com/zh/tools/sp800-56c-hkdf-extract-and-expand-walkthrough

- **分类:** Security

- **关键词:** HKDF, SP 800-56C, RFC 5869, 密钥派生, HMAC, ECDH, TLS

## 概述

面向 ECDH 共享密钥派生的确定性 SP 800-56C/RFC 5869 学习演示，适用于开发和测试向量，而非密钥管理服务。

## 输入项

- **输入预设** (select)
- **哈希** (select)
- **输入编码** (select)
- **输入密钥材料（IKM）** (textarea): Hex, text, or Base64 according to input encoding
- **盐值** (textarea): Optional; empty uses a zero-filled HashLen salt
- **上下文信息** (textarea): Optional context / protocol label
- **输出长度（字节）** (number)

## 适用场景

- 学习 HKDF Extract 与 Expand 的分步 HMAC 计算过程。
- 复现 RFC 5869 SHA-256 测试向量并核对 PRK 和 OKM。
- 验证 ECDH 共享密钥派生中的盐值、上下文信息和输出长度配置。

## 工作原理

- 选择输入预设、哈希算法和输入编码，也可以手动填写 IKM、盐值与上下文信息。
- 工具使用 HKDF Extract 计算伪随机密钥 PRK；未填写盐值时使用 HashLen 长度的零值盐。
- 工具根据上下文信息和目标长度执行 HKDF Expand，并生成连续的 T(n) 块。
- 结果以 HTML 展示 PRK、T(n) 和 OKM，输出长度可设置为 1 至 4096 字节。

## 使用案例

- RFC 5869 测试向量复现与结果核对。
- ECDH 共享密钥派生流程的开发和教学演示。
- TLS 或其他协议中上下文信息、盐值和派生长度的配置验证。

## 常见问题

### 这个工具实现什么规范？

它演示 SP 800-56C 和 RFC 5869 中的 HKDF Extract 与 Expand 流程。

### 支持哪些哈希算法？

支持 SHA-256、SHA-384 和 SHA-512。

### IKM 支持哪些输入格式？

根据输入编码设置，IKM、盐值和上下文信息可使用十六进制、UTF-8 文本或 Base64。

### 盐值可以留空吗？

可以。留空时，工具使用长度为 HashLen 的零值盐。

### 输出长度有什么限制？

输出长度必须为 1 至 4096 字节，工具会据此生成 OKM。

## 相关工具

- [SSH 密钥对生成器](https://elysiatools.com/zh/tools/ssh-key-generator): 生成 SSH 密钥对（推荐 Ed25519，或 RSA 4096、ECDSA P-256），公钥为可直接用于 ~/.ssh/authorized_keys 的 OpenSSH 格式，附 SHA256 指纹与 PEM 私钥。可选口令加密。本地运行。
- [PKCE Code Verifier 与 Challenge 生成器](https://elysiatools.com/zh/tools/pkce-code-verifier-generator): 生成、校验与验证 OAuth2 / OIDC PKCE（RFC 7636）的 code_verifier 与 S256 code_challenge 配对。三种模式：(1) 从密码学安全随机字节（256/384/512/768 位熵）生成全新的 verifier + challenge；(2) 按 RFC 审计你已有的 verifier——长度（43–128）、字符集 \[A-Za-z0-9-._~\] 与 ≥256 位熵；(3) 通过重算 BASE64URL(SHA256(verifier)) 验证 verifier/challenge 配对。可选构建完整的授权请求 URL 与令牌交换体。补足通用的 nonce-generator（仅输出 verifier+challenge 配对）——增加 RFC 合规审计与配对验证。
- [TOTP / HOTP 离线动态密码生成器](https://elysiatools.com/zh/tools/totp-hotp-offline-generator): 从 base32 共享密钥生成 RFC 6238 TOTP（基于时间，6/8 位、30/60 秒步长）与 RFC 4226 HOTP（基于计数器）一次性密码，完全离线，支持 HMAC-SHA1/256/512，并导出 otpauth:// URI 以便导入 Google Authenticator / Authy
- [数据列提取器](https://elysiatools.com/zh/tools/data-column-extractor): 从表格数据中提取指定列，支持多种格式和灵活的列选择方式
- [熵计算器](https://elysiatools.com/zh/tools/entropy-calculator): 衡量任意数据的随机性——香农熵（位/符号）、最小熵（最坏情况猜测难度）、字符集大小、重复率，以及在选定算力下的平均暴力破解时间。评级为强（最小熵 ≥128 位）、中（64-127）、弱（<64）。
- [HMAC 生成与验证器](https://elysiatools.com/zh/tools/hmac-generator-verifier): 使用 SHA-1/SHA-2/SHA-3/BLAKE2 对消息+共享密钥计算 HMAC 消息认证签名，或对收到的签名做验证（恒定时间比对），并内置 Stripe / Slack / GitHub 的 webhook 预设
- [RSA 加解密](https://elysiatools.com/zh/tools/rsa-encrypt-decrypt): 用 RSA 公钥加密文本，或用匹配的私钥解密密文，使用 OAEP 填充（SHA-1 或 SHA-256）。支持长消息分段。密钥与数据均在本地，不外传。由于 Bleichenbacher 攻击，Node 已禁用 PKCS#1 v1.5 解密，故本工具不提供该选项。
- [URL参数提取器](https://elysiatools.com/zh/tools/url-parameter-extractor): 从URL中提取和解析参数，包括查询字符串、哈希片段和路径段

## 示例

- [Android Java 图像处理示例](https://elysiatools.com/zh/samples/android-image-processing-java): Android Java 图像处理示例，包括图像读取保存、缩放和格式转换
- [Android Kotlin 图像处理示例](https://elysiatools.com/zh/samples/android-image-processing-kotlin): Android Kotlin 图像处理示例，包括图像读取保存、缩放和格式转换
- [Web Python 图像处理示例](https://elysiatools.com/zh/samples/web-image-processing-python): Web Python 图像处理示例，使用 PIL/Pillow 包括读取、保存、缩放和格式转换
- [Web Rust 图像处理示例](https://elysiatools.com/zh/samples/web-image-processing-rust): Web Rust 图像处理示例，包括图像读取保存、缩放和格式转换
