cSHAKE128 哈希生成器
使用函数名 N、自定义字符串 S 和任意输出长度计算 cSHAKE128。已通过 NIST SP 800-185 示例验证,在浏览器中本地运行。
必须是 8 的倍数,范围 8 到 16384 位。
通常留空。该字段由 NIST 保留,用于基于 cSHAKE 定义的函数。
可选的域分隔标签,例如应用名称。不同的字符串会产生完全不相关的输出。
完全在浏览器中运行,您的数据不会被上传。
什么是 cSHAKE128 哈希生成器?
cSHAKE128 是 NIST SP 800-185 定义的 SHAKE128 可自定义版本。它增加了函数名 N 和自定义字符串 S,使同一条消息出于不同用途计算哈希时得到互不相关的输出。本工具可设置 N、S 和输出长度。
如何使用 cSHAKE128 哈希生成器
- 在 要计算哈希的文本 中输入或粘贴内容——摘要会随输入实时更新(输入框为空时显示空输入的哈希值)。
- 选择 输入编码:文本 (UTF-8) 会把字符按 UTF-8 计算哈希,十六进制字节 或 Base64 则对解码后的原始字节计算哈希。
- 设置 输出长度(位)(默认 256)。
- 可选择填写 函数名 (N)(通常留空)和 自定义字符串 (S),例如你的应用或协议名称。
- 选择 输出格式(十六进制小写、十六进制大写或 Base64),然后点击 复制。
示例
Data 00010203 (Hex bytes), N empty, S = "Email Signature", 256 bits
c1c36925b6409a04f1b504fcbca9d82b4017277cb5ed2b2065fc1d3814d5aaf5
NIST SP 800-185 cSHAKE 示例 #1。
何时使用 cSHAKE128 哈希生成器
需要域分隔时可以使用 cSHAKE128:即用同一份数据出于不同目的派生多个哈希(密钥派生标签、协议记录、带标签的哈希)。不需要自定义时请使用普通的 SHAKE128,涉及密钥时请使用 KMAC128。N 保留给 NIST 定义的函数,应用通常只应使用 S。
cSHAKE128 哈希生成器 的工作原理
cSHAKE128(NIST SP 800-185)就是带域分隔的 SHAKE128。在消息之前,它会先吸收 bytepad(encode_string(N) || encode_string(S), 168)——即函数名 N 和自定义字符串 S,二者各自带有位长度前缀——然后使用后缀 00 进行填充,而不是 SHAKE 的 1111。如果 N 和 S 都为空,则按定义 cSHAKE128 等同于 SHAKE128。不同的 N 或 S 会得到相互独立的函数。N 和 S 以文本形式输入,并按 UTF-8 编码。
常见用例
- 复现 NIST SP 800-185 的 cSHAKE 测试向量
- 从同一份输入为不同上下文派生互相独立的值
- 实现或调试基于 cSHAKE 构建的 KMAC、TupleHash 或 ParallelHash
- 用应用专属的标签对协议消息计算哈希
安全提示
cSHAKE128 与 SHAKE128 一样提供 128 位安全强度。自定义字符串是公开的,不是密钥——需要认证请使用 KMAC128。计算在你的浏览器本地完成。
常见问题
如果 N 和 S 都为空会怎样?
按定义,此时 cSHAKE128 等同于 SHAKE128;对 abc 取 256 位会得到 5881092dd818bf5c…,与 SHAKE128 相同。
N 和 S 有什么区别?
N(函数名)保留给 NIST 定义的函数,例如“KMAC”或“TupleHash”。S 是供应用自由使用的自定义字符串。实际使用中设置 S、让 N 留空即可。
N 和 S 是如何编码的?
按 UTF-8 字节编码,前面加上以位为单位的长度(left_encode),再按 SP 800-185 的规定填充到速率长度。