如何在 Python 中高效計算大檔案的 MD5 雜湊值

Linda Hamilton
發布: 2024-10-20 09:52:30
原創
926 人瀏覽過

How to Efficiently Compute MD5 Hash of Large Files in Python

在Python中高效計算大檔案的MD5雜湊

在某些場景下,需要計算超出可用RAM的大檔案的MD5雜湊。原生 Python 函數 hashlib.md5() 不適合這種情況,因為它需要將整個檔案載入到記憶體中。

要克服此限制,一種實用的方法是以可管理的區塊讀取檔案並迭代更新雜湊值。這樣可以在不超過記憶體限制的情況下進行高效率的哈希計算。

程式碼實作

<code class="python">import hashlib

def md5_for_file(f, block_size=2**20):
    md5 = hashlib.md5()
    while True:
        data = f.read(block_size)
        if not data:
            break
        md5.update(data)
    return md5.digest()</code>
登入後複製

用法範例

要計算檔案的MD5 哈希,請使用下列語法:

<code class="python">with open(filename, 'rb') as f:
    md5_hash = md5_for_file(f)</code>
登入後複製

md5_hash 變數將包含計算出的MD5 雜湊值作為類似位元組的物件。

其他注意事項

確保以二進位模式開啟檔案('rb ')以避免錯誤的結果。對於全面的檔案處理,請考慮以下函數:

<code class="python">import os
import hashlib

def generate_file_md5(rootdir, filename, blocksize=2**20):
    m = hashlib.md5()
    with open(os.path.join(rootdir, filename), 'rb') as f:
        while True:
            buf = f.read(blocksize)
            if not buf:
                break
            m.update(buf)
    return m.hexdigest()</code>
登入後複製

此函數採用檔案路徑並以十六進位字串形式傳回 MD5 雜湊值。

透過利用這些技術,您可以有效地計算大檔案的 MD5 雜湊值不會遇到記憶體限制。

以上是如何在 Python 中高效計算大檔案的 MD5 雜湊值的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!