# HMAC + BLAKE3 + SHA-3/Keccak + Poly1305 + BLAKE2 带密钥 MAC 构造审计器

跨 HMAC-SHA-2/SHA-3、带密钥 BLAKE2、BLAKE3、KMAC 与 Poly1305 计算 MAC 并做安全审计，内置官方已知答案自测、密钥/标签长度检查与跨构造兼容性矩阵。

> 标准页面: https://elysiatools.com/zh/tools/hmac-blake3-sha3-keccak-keyed-hash-and-mac-construction-linter

- **分类:** Cryptography

- **关键词:** hmac 审计, mac 构造, blake2 带密钥, blake3 密钥哈希, kmac, cshake, poly1305 一次性, sha3 keccak, rfc 4231 向量, 标签截断

## 概述

每个标签都由经过验证的实现生成：HMAC 走 node:crypto 的 OpenSSL；BLAKE2/BLAKE3/KMAC/Poly1305 为纯 TypeScript 实现，并对照官方 BLAKE2 KAT、BLAKE3 官方向量、NIST SP 800-185 KMAC 样本、RFC 8439 §2.5.2 与 FIPS 202 校验。安全强度依据 NIST SP 800-107（HMAC 强度 = min(密钥位数, 哈希输出位数)，保留 t 位标签的伪造界为 2^(t/2)）、SP 800-185（KMAC = min(密钥, 2·标签, c/2) 位）与 RFC 8439（Poly1305 一次性，≤ 8⌈L/16⌉/2^106）。

## 输入项

- **消息** (textarea): Payload to authenticate (e.g. webhook body, JWT signing input)
- **消息编码** (select)
- **密钥（十六进制）** (text): e.g. 0b0b0b... (20 bytes) or 000102...1f (32 bytes)
- **保留标签长度（字节）** (number)
- **域分离标签（KMAC custom / BLAKE3 context）** (text): e.g. myapi/v1/webhook

## 适用场景

- 对比评估不同 MAC 算法（如 HMAC-SHA256、KMAC128、BLAKE3 带密钥模式）在特定密钥长度下的有效安全位与截断风险。
- 排查 Webhook 签名、API 验签或 JWT 消息认证过程中的密钥编码与标签生成兼容性问题。
- 验证自定义协议中使用的 MAC 截断标签长度是否符合 NIST SP 800-107 或 SP 800-185 推荐的安全界限。

## 工作原理

- 输入待签名消息载荷并选择编码方式（UTF-8 文本或十六进制 Hex），同时填入十六进制格式的密钥字节。
- 可选指定标签保留字节数（4 至 64 字节）以及 KMAC 与 BLAKE3 所需的域分离标签（Context）。
- 系统调用已校验的标准密码学实现计算各类 MAC 构造输出，执行官方 KAT 自测，并依照安全标准输出包含截断警告与安全位评估的 HTML 审计报告。

## 使用案例

- API 网关与 Webhook 签名规范制定与算法选型验证。
- 嵌入式或网络协议中短 MAC 标签截断方案的抗碰撞与防伪造安全性审计。
- 比对跨语言实现（如 OpenSSL、TypeScript 原生实现）的 MAC 输出一致性与边界行为。

## 常见问题

### 为什么某些算法（如 BLAKE3 或 Poly1305）在审计报告中显示被跳过？

BLAKE3 密钥哈希与 Poly1305 严格要求密钥长度必须正好为 32 字节（256 位）。若输入的十六进制密钥长度不满足要求，审计器会自动跳过对应构造并标注原因。

### 保留标签长度截断会如何影响 MAC 的安全性？

依据 NIST SP 800-107 标准，保留 t 位的 MAC 标签其伪造攻击安全界为 2^(t/2)；当保留长度少于 16 字节（128 位安全强度）时，审计器会触发截断安全告警。

### 域分离标签（customLabel）的作用是什么？

用于 KMAC 的 Customization 字符串与 BLAKE3 的 Key Derivation 上下文，防止相同密钥在不同子系统或协议层中产生可互换的有效 MAC 标签。

### 输入的十六进制密钥包含空格或特殊字符会报错吗？

密钥必须是合法的十六进制字符串（hex 格式）。输入前请移除前缀 0x 或空格，确保每两个十六进制字符对应一个完整字节。

### 该工具如何验证各 MAC 算法实现的准确性？

计算过程中会自动运行针对 RFC 4231、BLAKE2 KAT、BLAKE3 官方向量、NIST SP 800-185 样本及 RFC 8439 等 11 项已知答案自测试题，确保算法实现完全一致。

## 相关工具

- [哈希算法对比器](https://elysiatools.com/zh/tools/hash-algorithm-comparator): 对同一输入同时用 MD5、SHA-1、SHA-256、SHA-512、BLAKE2b、BLAKE3 哈希并横向对比：输出长度、十六进制/Base64 摘要、安全状态（已破解/现代）以及相对速度基准。适合教学、选择哈希算法或核对校验和。
- [文本哈希生成器](https://elysiatools.com/zh/tools/text-hash-generator): 一次性计算任意文本的 MD5、SHA-1、SHA-256、SHA-512、CRC-32 哈希。同时给出十六进制和 Base64 两种摘要(基于 UTF-8 编码)。
- [BLS(Boneh–Lynn–Shacham)门限签名聚合 + 分布式密钥生成模拟器](https://elysiatools.com/zh/tools/bls-boneh-lynn-shacham-threshold-signature-aggregation-distributed-key-gen-simulator): 端到端模拟 BLS12-381 BLS 签名:Joint-Feldman DKG 仪式、带 Lagrange 插值的 t-of-n 门限签名、流氓密钥攻击与保有性证明防御,以及 Ethereum 2 证明聚合。
- [OAuth 2.0 / OIDC 授权码 + PKCE 流程可视化](https://elysiatools.com/zh/tools/oauth-oidc-authorization-code-pkce-flow-visualizer): 端到端模拟带 PKCE 的授权码流程：verifier/challenge 生成、授权 URL、令牌交换、ID Token 校验清单与拦截攻击演示。
- [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 合规审计与配对验证。
- [RSA 加解密](https://elysiatools.com/zh/tools/rsa-encrypt-decrypt): 用 RSA 公钥加密文本，或用匹配的私钥解密密文，使用 OAEP 填充（SHA-1 或 SHA-256）。支持长消息分段。密钥与数据均在本地，不外传。由于 Bleichenbacher 攻击，Node 已禁用 PKCS#1 v1.5 解密，故本工具不提供该选项。
- [Web Push RFC 8030 请求 + VAPID + RFC 8291 负载加密编码器](https://elysiatools.com/zh/tools/web-push-rfc8030-vapid-rfc8291-payload-encrypted-content-encoder): 编码完整的 Web Push 发送流程：RFC 8291 aes128gcm 负载加密、RFC 8292 VAPID ES256 JWT、RFC 8030 头部、APNs/FCM 头部对照与解密往返验证。
- [CRC32 校验和](https://elysiatools.com/zh/tools/crc32-checksum): 计算任意文本或原始字节的 CRC32 校验和（IEEE 802.3 多项式）。可输出十六进制、十进制或二进制。接受纯文本（UTF-8）或通过 hex/base64 输入的原始字节。

## 示例

- [MAC地址示例](https://elysiatools.com/zh/samples/mac-address): 用于验证测试的各种格式MAC地址集合
- [无版权MP3音频样本](https://elysiatools.com/zh/samples/mp3-samples): 免费使用和测试的无版权音频样本集合，包括自然声音、冥想音乐和环境音频，适用于测试和开发目的
- [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 图像处理示例，包括图像读取保存、缩放和格式转换
