大文件上传-秒传-hash
使用SHA-256为每个分块生成唯一标识如 文件哈希 分块序号。SHA-256是一种广泛使用的加密哈希函数它将输入数据转换为一个固定大小的哈希值。Web CryptoAPI是浏览器原生支持的加密API 支持SHA-256等哈希算法性能极佳通常比 CryptoJS 快10倍以上优化建议优点✅ 性能极佳浏览器原生优化支持硬件加速。✅ API 简单无需额外依赖。✅ 支持流式计算大文件可直接读取 ArrayBuffer。缺点❌ 兼容性仅支持现代浏览器IE 不支持。❌ 同步限制crypto.subtle.digest 必须是 async/await 或 Promise 调用。Web Crypto API转换constcalculateBlobHashNativeasync(blob,algorithmSHA-256){conststartTimeperformance.now();try{constarrayBufferawaitblob.arrayBuffer();consthashBufferawaitcrypto.subtle.digest(algorithm,arrayBuffer);consthashArrayArray.from(newUint8Array(hashBuffer));consthexHashhashArray.map((b)b.toString(16).padStart(2,0)).join();constendTimeperformance.now();console.log(原生 API 总耗时:${(endTime-startTime).toFixed(2)}ms);returnhexHash;}catch(error){console.error(使用原生 API 计算哈希时出错:,error);throwerror;}};constexampleUsageasync(blob){// 创建一个示例 Blob在实际应用中这可能是用户上传的文件// const text 这是一个测试文件内容用于演示如何计算 Blob 的哈希值。;// const blob new Blob([text], { type: text/plain });console.log(计算得到的哈希值判断:,blobinstanceofBlob,blob.size/1024/1024,mb);try{consthashawaitthis.calculateBlobHashNative(blob);console.log(计算得到的哈希值:,hash);}catch(error){console.error(示例使用出错:,error);}};