超大檔案如何計算md5?

時間 2021-05-31 22:42:24

1樓:

//使用openssl的寫法

bool Md5FileCpp(const std::string& filepath,std::string& strMd5)

FILE *pFile = fopen (filepath.c_str(), "rb");

if (pFile == NULL)

return false;

MD5_CTX ctx;

unsigned char buffer[1024] = ;

int len = 0;

unsigned char md[16];

MD5_Init(&ctx);

while ((len = fread (buffer, 1, 1024, pFile)) > 0)

MD5_Update (&ctx, buffer, len);

MD5_Final(md, &ctx);

char buf[33] = ;

char tmp[3] = ;

for (int i = 0; i < 16; i++)sprintf_s(tmp,3,"%02x", md[i]);

strcat_s(buf,33,tmp);

strMd5.assign(buf, 33);

return true;

2樓:

如下,可選擇支援的hash演算法。

python 3.6x通過測試,尚未進行其它版本的測試

import

hashlib

defhashs

(fineName

,type

="sha256"

,block_size=64

*1024

):""" Support md5(), sha1(), sha224(), sha256(), sha384(), sha512(), blake2b(), blake2s(),

sha3_224, sha3_256, sha3_384, sha3_512, shake_128, and shake_256

"""with

open

(fineName

,'rb')as

file

:hash

=hashlib

.new

(type,b

"")while

True

:data

=file

.read

(block_size)if

notdata

:break

hash

.update

(data

)return

hash

.hexdigest

()# Licensed under the MIT License.

速度比靜態語言慢!

3樓:Rita

補充前端計算的方法,webuploader 支援分片計算md5,設定的分片不要太大就好了。

WebUploader.Uploader.register分片傳送之前39;before-send':

'beforeSendbeforeSend: function (blocklet file = block.filelet owner = this.

ownerowner.md5File(file.source, block.

start, block.end).then(function(retconsole.

log(ret

4樓:

首先,至少沒必要先把整個檔案讀到記憶體裡。比如在 php 裡,如果有人 md5(file_get_contents(big_file_name)) 就確實非常不妥當。

因為 md5 是每 512 bit 作為乙個 chunk 進行計算的。所以可以每次讀取一部分的內容(最少 512 bit,比較合適是 st_blksize),進行那些 chunk 部分的計算,之後再讀取下一部分內容繼續計算。

PHP大檔案上傳問題?

guess 一.強烈建議改用PHP7 上傳大檔案要注意在php5中filesize返回的檔案大小有問題,一般不會超過2g,網上找了很多替代方法都無效說白了就是32位惹的禍,建議直接更換php7.之前bug就是這個引發的。不信的話可以測試5G和3G,乙個返回值是1.5G,乙個乾脆就是負數 我戳。二.按...

關於2019人大檔案學考研的提問?

招魚 2021考研er,一戰人大,初試第一 390分 https zhuanlan p 361659238 範懟懟 鄙人18年考的本校本專業表示,考哪所學校和本科並無太大關係 一般來說好的大學不可能會有本校對於專業課知識的優勢,除非極個別學校在分數上有優惠政策 考本校主要是複試上的優勢,考研是個導師...

超大資料量,如何加快寫檔案的速度?

牙雅 源資料是什麼格式?可否用load方式匯入資料庫,編寫程式分批次並行運算元據庫,生成符合要求的檔案。大型機處理億級別的資料,應該1個小時足夠了。 不是十分清楚題主遇到的是什麼樣的問題,是已經有了硬碟裡的資料要讀進來處理一下再寫回硬碟嗎?如果是這樣的話原始資料是什麼格式的呢?寫回去的時候有什麼格式...