字节证据工作台 · 工具不是魔法
摘要是否一致,先从输入字节查起。
Hash 处理的是字节。校验值不一致时,应先确认双方使用了相同的字符编码、Unicode 规范化、换行符和文件内容,再检查算法与 hex / Base64 输出表示。
输入清单#BYTES-0514
文本 · UTF-8
字符先编码为字节
文件 · 原始内容
所选文件的 ArrayBuffer 直接传给本地 Worker
Café43 61 66 C3 A9
你好E4 BD A0 E5 A5 BD
LF0A
CRLF0D 0A
看起来相同的文本,可能采用不同 Unicode 规范化形式或带有不可见的尾随字节。输入清单不仅记录结果,也要记录它来自文本还是文件。
两种工具
普通摘要与 HMAC 回答的是不同问题。
INSTRUMENT 01
普通 HASH
消息 → H(message)任何拿到消息的人都能复算。
用于完整性比对
INSTRUMENT 02
带密钥的 HMAC
密钥 + 消息 → HMAC只有共享密钥的参与方才能复算。
完整性 + 共享密钥认证
算法状态架
输出更长,不等于安全属性就更完整。
SHA-256256 bit当前推荐通用完整性校验与内容寻址
SHA-384384 bit当前推荐兼容特定协议或安全策略
SHA-512512 bit当前推荐需要较宽 SHA-2 输出的场景
SHA-1160 bit旧算法仅作兼容校验;存在碰撞弱点
MD5128 bit旧算法仅作旧校验值兼容;存在碰撞弱点
不一致排查
肉眼相同的输入,可能不是同一份字节证据。
换行符
LF 0ACRLF 0D 0AUnicode
é · U+00E9e + ◌́ · U+0065 U+0301文本编码
UTF-8UTF-16LE输出表示
小写 hex带 padding 的 Base64文件处理
原始字节文本模式转换摘要长度
完整值截断前缀校验回执
规范化表示后,仍需比对完整摘要。
来源release.tar.zst · 原始字节
算法SHA-256
预期值64 个 hex 字符
实际值64 个 hex 字符
结论匹配 / 不匹配
COMPLETE VALUE REQUIRED
匹配只能说明本地字节与所填预期值一致。发布者身份是否可信,还取决于预期值从哪里取得、是否经过可信渠道认证。