当前位置:首页 > 前端 > 正文内容

js前端计算文件文本md5,sha1,sha256等值

xuwenyan2年前 (2021-03-23)前端944

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);
    文章作者:xuwenyan
    版权声明:本文为本站原创文章,转载请注明出处,非常感谢,如版权漏申明或您觉得任何有异议的地方欢迎与本站取得联系。

    扫描二维码推送至手机访问。

    版权声明:本文由艺文笔记发布,如需转载请注明出处。

    本文链接:https://www.xuwenyan.com/archives/1048

    分享给朋友:
    返回列表

    没有更早的文章了...

    下一篇:分享几个 HTML5 非常惊艳的动画 demo

    “js前端计算文件文本md5,sha1,sha256等值” 的相关文章

    js统计字符串中汉字、数字、字母、符号个数

    js统计字符串中汉字、数字、字母、符号个数

    如何用js统计字符串中字符个数,所占字节数,包含的汉字个数、数字个数、字母个数、标点符号个数? 首先去掉一些不需要统计的符号 let text = document.getElementById('input').value; // 去掉换行符 text = text.replace(...

    javascript实现解析网页(html)

    javascript实现解析网页(html)

    javascript如何实现解析网页(html) demo代码如下: var parser = new DOMParser(); var html_dom = parser.parseFromString(html_content, 'text/html'); var els =...

    什么是跨域访问,如何实现跨域?

    什么是跨域访问,如何实现跨域?

    什么是跨域请求?在 HTML 中,<a>, <form>, <img>, <script>, <iframe>, <link> 等标签以及 Ajax 都可以指向一个资源地址,而所谓的跨域请求就是指:当前发起请求的域与该请求指向的...

    如何解决html input输入框'autocomplete="off"'无效问题

    如何解决html input输入框'autocomplete="off"'无效问题

    大家都知道autocomplete属性是表单字段中的HTML5新属性,该属性有两种状态值,分别为"on" 和 "off",该属性可省略:省略属性值后默认值为"on",也可以省略属性名,直接写入关键字on或off。但是在Chrome核的浏览器...