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);
作者:徐文焱