hash (MD5)
MD5 哈希工具集,底层统一使用 CryptoJS.MD5,输出 32 位十六进制小写字符串。2 个函数全部 auto-import,framework 内部用于分片上传的文件校验(createUploader)等场景。
⚠️ MD5 仅用于非安全场景(去重、签名拼接、缓存 key)。勿用于密码 / 敏感摘要 —— MD5 已可碰撞,不是密码学安全的哈希。
API
| 函数 | 签名 | 说明 |
|---|---|---|
md5 | (input: string) => string | 字符串 → 32 位 hex MD5 |
md5File | (file: File) => Promise<string> | 完整读取文件计算 MD5,适合小文件(< 几 MB) |
使用示例
字符串实时 md5 + 选文件 md5File
加载中...
// 字符串 MD5(签名拼接)
const sig = md5(`${timestamp}${nonce}${apiKey}`)
// 小图片完整 MD5(分片上传的校验参数)
const fingerprint = await md5File(imageFile)
注意事项
md5File基于File.arrayBuffer(),仅浏览器可用;SSR 期没有File,也不应有计算文件 hash 的场景。md5是纯计算函数,服务端 / 客户端均可调用。
大文件完整指纹:hashFile
在浏览器 Worker 内以 2MiB 分块增量计算完整文件的 MD5 和 SHA-256,避免主线程整文件读取。返回小写十六进制 { md5, sha256 }。自动导入;仅浏览器可用,不支持 Worker 时直接报错。signal 取消计算并销毁 Worker;onProgress(bytes) 是已读取字节数,不是上传进度。
const controller = new AbortController()
const digest = await hashFile(file, {
signal: controller.signal,
onProgress: (bytes) => (progress.value = bytes / file.size),
})