Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara Mengira Hash MD5 Fail Besar dalam Python dengan Cekap

Cara Mengira Hash MD5 Fail Besar dalam Python dengan Cekap

Linda Hamilton
Linda Hamiltonasal
2024-10-20 09:52:30927semak imbas

How to Efficiently Compute MD5 Hash of Large Files in Python

Kira Cincang MD5 Fail Besar Dengan Cekap dalam Python

Dalam senario tertentu, adalah perlu untuk mengira cincang MD5 bagi fail besar yang melebihi RAM yang tersedia. Fungsi Python asli hashlib.md5() tidak sesuai untuk senario sedemikian kerana ia memerlukan keseluruhan fail dimuatkan ke dalam memori.

Untuk mengatasi had ini, pendekatan praktikal ialah membaca fail dalam ketulan yang boleh diurus dan mengemas kini cincang secara berulang. Ini membolehkan pengiraan cincang yang cekap tanpa melebihi had memori.

Pelaksanaan Kod

<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>

Contoh Penggunaan

Untuk mengira cincang MD5 fail, gunakan sintaks berikut:

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

Pembolehubah md5_hash akan mengandungi cincangan MD5 yang dikira sebagai objek seperti bait.

Pertimbangan Tambahan

Pastikan anda membuka fail dalam mod binari ('rb ') untuk mengelakkan keputusan yang salah. Untuk pemprosesan fail yang komprehensif, pertimbangkan fungsi berikut:

<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>

Fungsi ini mengambil laluan fail dan mengembalikan cincangan MD5 sebagai rentetan perenambelasan.

Dengan menggunakan teknik ini, anda boleh mengira dengan cekap Cincang MD5 untuk fail besar tanpa menghadapi had memori.

Atas ialah kandungan terperinci Cara Mengira Hash MD5 Fail Besar dalam Python dengan Cekap. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn