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);

本文为@艺文笔记原创文章,转载请注明出处:https://www.xuwenyan.com/archives/1048,非常感谢!
上一篇:  已是最后文章