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