node快速计算md5

最近在做一个文件上传的项目,当上传文件达到几十GB,几百GB后在文件上传99%后,需要等待非常长的时间文件才能完成上传。通过埋点打印时间,发现md5计算时间非常长。

为了校验文件传输的完整性需要在文件上传结束后校验文件的完整性,md5值就用来校验完整性,所以这一步不能少。

解决方案

通过网上查找资料,MD5计算工具在计算大文件md5值时也不是一次性计算出来的,也是通过分片的方式累加计算出来的。

所以我们在上传大文件时,本来上传的思路就是分片上传,我们只需要对每块分片进行md5计算,最后累加计算md5值即可。

通过网上google发现了一篇介绍node通过crypto加密模块实现md5加密的方法,里面的介绍很详细,里面介绍了最快速计算md5的方法:

require(‘crypto‘).createHash(‘md5‘).update(data).digest(‘hex‘)

update中传入每片数据的二进制流。通过测试发现每块分片计算的md5时间为20多毫秒,速度提升了几十倍。

原文地址:https://www.cnblogs.com/leejay6567/p/10136966.html

时间: 2024-08-18 21:58:07

node快速计算md5的相关文章

c# 如何给文件计算MD5

在项目中,当我们需要把数据文件上传到ftp时,为了保证数据的完整性,我们会计算数据文件的MD5,并把MD5文件和数据文件一同上传. 那么如何产生数据文件的MD5呢? 我们可以通过System.Security.Cryptography.MD5类和System.BitConverter类来实现: private void WriteMD5(string zipFile, string ctrlFile)        {            // Add hash code to ctrl fi

快速学习MD5的方法

MD5加密的Java实现 在各种应用系统中,如果需要设置账户,那么就会涉及到存储用户账户信息的问题,为了保证所存储账户信息的安全,通常会采用MD5加密的方式来,进行存储.首先,简单得介绍一下,什么是MD5加密.        MD5的全称是Message-Digest Algorithm 5 (信息-摘要算法),在90年代初,由MIT Laboratory for Computer Scientce 和RSA Data Security Inc 的 Ronald L.Rivest开发出来,经MD

最简单的计算MD5方法

原来写过一个计算MD5的程序,是用了一个叫MD5.pas的单元,使用起来还算简单,但还有更简单的办法,安装了indy就会有IdHashMessageDigest单元(delphi 7默认安装indy) 有篇文章教怎么用IdHashMessageDigest计算字符串md5,计算文件md5却没有说,在这里补充一下,先看计算函数: function TIdHashMessageDigest4.HashValue(AStream: TStream): T4x4LongWordRecord;参数类型是一

[Swift通天遁地]七、数据与安全-(20)快速实现MD5/Poly1305/Aes/BlowFish/Chacha/Rabbit

本文将演示如何使用第三方类库,快速实现多种的加密算法. 首先确保已经安装了所需的第三方类库,点击查看配置文件. 1 platform :ios, '8.0' 2 use_frameworks! 3 4 target 'DemoApp' do 5 source 'https://github.com/CocoaPods/Specs.git' 6 pod 'CryptoSwift', :git => "https://github.com/krzyzanowskim/CryptoSwift&q

node快速构建express项目

1.首先,到node官网,下载node安装.我的电脑是windows系统,所以下载的是windows版本的,下载完成之后,一路下一步安装就可以了.node中文网:http://nodejs.cn:node官网:https://nodejs.org/en/: 2.node安装完成之后,会自动安装npm包管理器.打开CMD,(windows系统,点击开始-->运行-->输入cmd回车):输入命令 node -v 如果输出信息,表示node安装成功;接着输入 npm -v 如果输出信息,表示npm安

斐波那契数列快速计算

感觉一天时间过得挺快,而自己却没有什么收获. 1.之前恰好看了跟快速幂乘法一样的计算大数乘法模,防止溢出,感觉挺有用的,而且用的挺多的. 2.分析问题的能力还很差,遇到一个问题,无法正确的进行转化,怎么进行考虑,感觉自己这方面还很欠缺,这应该是通过大量做题,然后不断总结得出来的吧!毕竟题做的多了,遇到新题也就那几种套路.感觉也是挺对的,面试题的那些小套路在搞竞赛的人面前根本什么也不是,感觉这句话挺有道理的. 3. 这次做的这道题,最后就是转化为求第n个斐波那契数,而我根本没有推导出这个.然后,之

计算 MD5值

// // MD5Value.h // iOSEdu // // Created by littest on 16/2/26. // Copyright © 2016年 littest. All rights reserved. // #import <Foundation/Foundation.h> #import <CommonCrypto/CommonDigest.h> #define FileHashDefaultChunkSizeForReadingData 1024*8

java实现计算MD5

import java.io.FileInputStream; import java.security.DigestInputStream; import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; public class MD5Class { // 计算字符串的MD5 public static String conVertTextToMD5(String plainText) {

VC使用CryptoAPI计算MD5

// md5.h #include <tchar.h> #include <wincrypt.h> // 计算Hash,成功返回0,失败返回GetLastError() // CONST BYTE *pbData, // 输入数据 // DWORD dwDataLen, // 输入数据字节长度 // ALG_ID algId // Hash 算法:CALG_MD5,CALG_SHA // LPTSTR pszHash, // 输出16进制Hash字符串,MD5长度为32+1, SH