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),
})