KMAC128 文件 MAC 计算器
在浏览器本地使用你的秘密密钥和自定义字符串计算文件的 KMAC128 认证标签,并与预期标签比对。
必须是 8 的倍数,范围 8 到 16384 位。
可选的域分隔标签,例如应用名称。不同的字符串会产生完全不相关的输出。
密钥为空。没有密钥时,KMAC 无法起到认证作用。
尚未选择文件。选择文件后会立即显示校验值。
文件在浏览器中分块读取,绝不会上传。
什么是 KMAC128 文件 MAC?
本工具使用秘密密钥、可选的自定义字符串和你选择的输出长度计算文件的 KMAC128 标签,并与预期标签比对。与普通校验值不同,标签匹配说明文件出自知道该密钥的人。
如何使用 KMAC128 文件 MAC
- 输入 密钥 和 密钥编码,以及可选的 自定义字符串 (S) 和 输出长度(位);修改它们会重新计算标签。
- 点击拖放区域或将文件拖到上面;文件会分块读取,并显示进度条。
- 查看下方显示的 文件名 和 文件大小,确认选对了文件。
- 将发布方提供的校验值粘贴到 预期校验值(可选) 中——会显示“匹配”或“不匹配”(大小写、
0x以及末尾的文件名都会被忽略)。 - 选择 输出格式,然后点击 复制 以保存或发送该标签。
示例
A file hash-abc.txt containing "abc", key "secret" (UTF-8), S empty
9723991ae89d1a16b62b38aaa31cb025d0612906eb4f2885a73efc7d43091523
输出长度 256 位。
何时使用 KMAC128 文件 MAC
可用它检查文件是否来自与你共享秘密密钥的一方,或为基于 KMAC 的系统中的文件生成标签。要验证公开下载的文件,应使用校验值或数字签名——MAC 要求双方共享密钥。
KMAC128 文件 MAC 的工作原理
先吸收填充后的密钥,再以 4 MB 为一片吸收文件,然后吸收编码后的输出长度,最后挤出标签。KMAC128(NIST SP 800-185)就是函数名为“KMAC”的 cSHAKE128。它先吸收 bytepad(encode_string(K), 168)——即填充到完整分组的密钥——然后是消息,再是带有所需输出长度 L 的 right_encode(L),最后挤出 L 位。由于 L 是输入的一部分,同一份数据的 256 位和 512 位 KMAC 互不相关(与 SHAKE 不同)。海绵结构使简单的密钥前缀构造也是安全的,因此 KMAC 不需要 HMAC 那样的嵌套结构。
常见用例
- 校验固件或备份文件的认证标签
- 为文件生成外人无法复现的带密钥指纹
- 用大型输入测试 KMAC 实现
安全提示
请使用至少 16 字节的随机秘密密钥。密钥一旦泄露,标签就起不到任何保护作用。所有处理都在本地完成。
常见问题
文件和密钥会被上传吗?
不会。两者都留在你的浏览器中;文件在本地分块读取。
为什么我的标签对不上?
密钥字节(请检查密钥编码)、自定义字符串和输出长度,以及文件内容,都必须完全一致。
KMAC 标签是签名吗?
不是。任何持有共享密钥的人都能生成有效标签,因此它证明的是持有密钥,而不是某个特定签名者的身份。