如何在Python中計算大檔案的MD5雜湊值而不導致記憶體過載?

Linda Hamilton
發布: 2024-10-20 10:13:30
原創
779 人瀏覽過

How to Calculate MD5 Hashes for Large Files in Python without Memory Overloading?

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

簡介

圖明檔案的MD5 哈希值當大檔案的大小超過可用記憶體時,它們可能會帶來挑戰。本文提出了一個實用的解決方案,無需將整個檔案載入到記憶體中即可計算 MD5 哈希值。

要計算大檔案的 MD5 雜湊值,必須閱讀將它們分成可管理的區塊。以下程式碼片段示範了這一點:
<code class="python">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">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>
登入後複製

這裡,檔案以二進位模式(“rb” )開啟以正確處理二進位資料。然後該函數迭代文件,更新哈希值,並返回最終哈希值的十六進製表示形式。

交叉檢查結果

為了確保準確性,請考慮交叉- 使用「jacksum」等專用工具檢查結果:
jacksum -a md5 <filename>
登入後複製

這將提供獨立的MD5 雜湊計算以供比較。

以上是如何在Python中計算大檔案的MD5雜湊值而不導致記憶體過載?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板