js流式计算大文件sha256

这篇具有很好参考价值的文章主要介绍了js流式计算大文件sha256。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

小文件计算sha256:

import sha256 from 'crypto-js/256'

console.log(sha256('message'));

大文件流式计算sha256

超大文件的sha256,不能直接用上面方法sha256(file),这会让用户等待非常久,所以需要流式计算,原理大概就是把file切割成一小块,比如10M为一个单位来分批次计算,最后在整合成一个完整的sha256,示例代码如下:文章来源地址https://www.toymoban.com/news/detail-680678.html

<!DOCTYPE html>
<html>
<head>
  <title>文件流式处理和SHA256哈希值生成</title>
  <script src="https://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>
<body>
  <h1>选择文件并计算SHA256哈希值</h1>
  <input type="file" id="fileInput" />
  <br>
  <br>
  <div class="aaa">
    <div class="bbb" id="aaa"></div>
  </div>
  <div>结果是:<span id="result"></span></div>

  <script>
    // 创建一个 SHA-256 的哈希对象
    const hash = CryptoJS.algo.SHA256.create();
    const bufferChunkSize = 1024 * 1024; // 64 KB
    let 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>

到了这里,关于js流式计算大文件sha256的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java获取文件的hash值(SHA256)

    目录 简介 获取网络文件的sha256值(方式一) 获取本地文件的sha256值(方式二)         在工作开发当中需求要通过文件的hash值比对文件是否被篡改过,于是通过使用了(sha256)hash值进行比对,因为对于任意长度的消息,SHA256都会产生一个256bit长的哈希值,通常用一个长

    2024年02月15日
    浏览(38)
  • linux中校验文件的sha256sum值

    下载源文件和校验文件进行校验,防止被中间人篡改文件内容。 同理的还有yum仓库,加载第三方库时,要先导入一个key密钥。 sha256校验 这里用helm软件包示例 查看sha256文件的内容是包含下载源文件的sha256值和源文件名的对照 校验 -c 从文件中读取sha256的值并校验

    2024年02月13日
    浏览(42)
  • kali/windows/burpsuite/Python下计算md5,sha1,sha256,base64的值

    对明文进行加密使之变成密文时,常用到的有 md5,sha1,sha256,base64      情景 :假设对“202222804198”这串数字进行加密,windows和kali桌面上已存在一个“1.txt”的文件,文件内容为该数字( 文件中除了需要加密的内容外不要有空行,回车的存在 ) 首先简单了解certutil的用法

    2024年02月11日
    浏览(39)
  • 检验下载文件完整性、真实性——SHA256校验值

    在Windows64位系统下,于https://www.kali.org/get-kali/#kali-installer-images 下载kali的.iso文件。下载后在cmd跳转到下载路径,使用certutil -hashfile命令计算文件SHA256校验值,与网站提供值比对相同,则文件无问题。  

    2024年02月05日
    浏览(76)
  • openssl做文件处理(base64,MD5,sha256等)

    这次使用openssl,发现openssl不仅可以用来做加密和解密,实际上也可以用来做文件的处理,比如base64转码、解码,文件md5的计算等。实现这些,即可以从命令行去做,也可以通过代码去实现。 1. 命令行操作         1. base64转码、解码                转码:         

    2024年02月11日
    浏览(33)
  • Github上git lfs oid sha256文件无法下载的解决方案

    当我克隆Github上的一个库时,其中有一个包的内容格式如下: version https://git-lfs.github.com/spec/v1 oid sha256:一堆数字和字母 size 一堆数字 这堆东西类似百度网盘的下载链接和密码,并不是一个完整文件,只是一个链接。 使用Git lfs重新clone这个项目时,仍然没有解决这个问题,因

    2024年02月09日
    浏览(36)
  • JavaScript前端接收流式数据

    在Java开发中,前端接收流式数据通常涉及到使用WebSocket 或Server-Sent Events(SSE)这样的技术。这两种技术都允许服务器推送实时数据到客户端,以便在浏览器中进行处理和更新。 1.  WebSocket: WebSocket是一种在单个 TCP 连接上进行全双工通信的协议。在Java 中,你可以使用Java

    2024年04月27日
    浏览(28)
  • 使用Win10自带的PowerShell命令校验文件和镜像文件的Hash值(MD5、SHA1/256等)正确性

    通常为了保证我们从网上下载的文件的完整性和可靠性,我们把文件下载下来以后都会校验一下MD5值或SHA1值(例如验证下载的Win10 ISO镜像是否为原始文件),这一般都需要借助专门的MD5检验工具来完成。但其实使用Windows系统自带的Windows PowerShell运行命令即可进行文件MD5、S

    2024年02月16日
    浏览(34)
  • Windows(Win10)自带的可用于文件校验(Hash校验,SHA256校验,MD5校验等)的命令: CertUtil 和 Get-FileHash

    Windows(Win10)自带的用于文件校验(Hash校验,SHA256校验,MD5校验等)的命令: certutil 可写为 CertUtil Get-FileHash 可写为 get-filehash CertUtil 是命令行的命令 可以在cmd和powershell中运行 Get-FileHash 是powershell的命令 不能在cmd命令行运行 支持的哈希算法 CertUtil 支持的算法 Get-FileHash 支持的算法 用

    2024年02月15日
    浏览(47)
  • Solidity Keccak256与SHA3-256

    SHA3由Keccak标准化而来,在很多场合下Keccak和SHA3是同义词,但在2015年8月SHA3最终完成标准化时,NIST调整了填充算法: SHA3-256(M) = KECCAK [512] (M || 01, 256) 。所以标准的NIST-SHA3就和Keccak计算的结果不一样。 如对空字符串进行Keccak256 和 SHA3-256结果各不相同: 以太坊在开发的时候SH

    2024年02月11日
    浏览(69)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包