js前端计算文件文本md5,sha1,sha256等值
js前端计算文件文本md5,sha1,sha256等值,一个比较完善的js库就是CryptoJS,下载地址:谷歌开源、github,这个库使用起来非常方便,支持增加计算(支持超大文件计算),支持ase加密、rc4加密、md5值、sha1值、sha3值、sha224值、sha256值、sha384值、sha512值等。
使用时首先将CryptoJS下载解压并放置到服务器某个位置

计算文件
首先导入CryptoJS必要的js文件,注意下面导入的顺序,反了会报错。下面演示导入了sha1.js,使用时按需导入对应的js文件。
<script language="javascript" type="text/javascript" charset="utf8" src="//CryptoJS/rollups/sha1.js?ver=1.0"></script> <script language="javascript" type="text/javascript" charset="utf8" src="/CryptoJS/components/lib-typedarrays-min.js?ver=1.0"></script>
计算代码如下:
function onSelectFile() { let browser = document.createElement('input'); browser.type = 'file'; browser.multiple = 'multiple'; browser.addEventListener('change', e => { calcFilesHash(e.target.files); }); browser.click(); } function calcFileHash(file) { let blobSlice = File.prototype.slice || File.prototype.mozSlice || File.prototype.webkitSlice, chunkSize = 1024 * 64, chunks = Math.ceil(file.size / chunkSize), currentChunk = 0, hasher_sha1 = CryptoJS.algo.SHA1.create(); fileReader.onload = function (e) { CryptoJS_data = CryptoJS.enc.Latin1.parse(e.target.result); hasher_sha1.update(CryptoJS_data); currentChunk += 1; if (currentChunk < chunks) { loadNext(); } else { console.log(hasher_sha1.finalize().toString(CryptoJS.enc.Hex)); } }; function loadNext() { var start = currentChunk * chunkSize, end = start + chunkSize >= file.size ? file.size : start + chunkSize; fileReader.readAsBinaryString(blobSlice.call(file, start, end)); } loadNext(); }
计算文本
文本计算比较简单
let sha1_value = CryptoJS.SHA1(input_str); console.log(sha1_value);