网站首页页脚,桂林模板网站建设,免费外贸网站模板,重庆建设工程信息网官网安全监督信息网小文件计算sha256#xff1a;
import sha256 from crypto-js/256console.log(sha256(message));大文件流式计算sha256
超大文件的sha256#xff0c;不能直接用上面方法sha256(file)#xff0c;这会让用户等待非常久#xff0c;所以需要流式计算#xff0c;原理大概就是把…小文件计算sha256
import sha256 from crypto-js/256console.log(sha256(message));大文件流式计算sha256
超大文件的sha256不能直接用上面方法sha256(file)这会让用户等待非常久所以需要流式计算原理大概就是把file切割成一小块比如10M为一个单位来分批次计算最后在整合成一个完整的sha256示例代码如下
!DOCTYPE html
html
headtitle文件流式处理和SHA256哈希值生成/titlescript srchttps://cdnjs.cloudflare.com/ajax/libs/crypto-js/4.0.0/crypto-js.min.js/script
/head
style.aaa {height: 20px;width: 1000px;border: 1px solid blue;padding: 5px;}.bbb {height: 100%;background: green;width: 0;}
/style
bodyh1选择文件并计算SHA256哈希值/h1input typefile idfileInput /brbrdiv classaaadiv classbbb idaaa/div/divdiv结果是span idresult/span/divscript// 创建一个 SHA-256 的哈希对象const hash CryptoJS.algo.SHA256.create();const bufferChunkSize 1024 * 1024; // 64 KBlet count 0;var aaa document.getElementById(aaa);function calculateSHA256(file) {return new Promise((resolve, reject) {const reader new FileReader();// 以流的方式读取文件function readChunk(start, end) {const slice file.slice(start, end);reader.readAsArrayBuffer(slice);}// 递归读取文件的每个分块function processChunk(offset) {const start offset;const end Math.min(start bufferChunkSize, file.size);count end;readChunk(start, end);}// 当读取完整个文件后计算哈希值并返回reader.onloadend function () {const arrayBuffer reader.result;const wordArray CryptoJS.lib.WordArray.create(arrayBuffer);// 更新哈希对象hash.update(wordArray);console.log(start, count, file.size);if (count file.size) {// 继续处理下一个分块processChunk(count);aaa.style.width count / file.size * 100 %}else {// 计算哈希值并返回const sha256Hash hash.finalize();resolve(sha256Hash.toString());}};// 开始处理文件内容分块processChunk(0);});}// 选择文件并计算SHA256哈希值const fileInput document.getElementById(fileInput);fileInput.addEventListener(change, async function (e) {const file e.target.files[0];try {const sha256Hash await calculateSHA256(file);document.getElementById(result).innerText sha256Hash;console.log(SHA256哈希值:, sha256Hash);} catch (error) {console.error(计算SHA256哈希值时出错:, error);}});/script
/body
/html