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