Mengkomputerkan Cincang MD5 untuk Fail Besar dalam Python
Modul hashlib Python menyediakan antara muka yang mudah untuk mengira cincang kriptografi. Walau bagaimanapun, untuk fail yang sangat besar yang saiznya melebihi memori sistem, menggunakan hashlib secara langsung boleh menjadi masalah.
Penyelesaian: Pencapaian Progresif
Untuk menangani isu ini, kami menggunakan pencincangan progresif dengan membaca fail dalam ketulan yang boleh diurus. Pendekatan ini memastikan bahawa keseluruhan kandungan fail dicincang tanpa menggunakan memori yang berlebihan. Berikut ialah contoh fungsi Python yang melaksanakan teknik ini:
<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>
Untuk mengira cincangan MD5 bagi fail besar, anda boleh menggunakan fungsi seperti berikut:
<code class="python">with open("filename", "rb") as f: md5 = md5_for_file(f)</code>
Nota pada Mod Fail
Pastikan anda membuka fail dalam mod binari dengan "rb" untuk hasil yang tepat. Menggunakan "r" boleh membawa kepada pengiraan yang salah.
Pertimbangan Tambahan
Untuk kemudahan, versi fungsi yang dipertingkatkan dibentangkan di bawah:
<code class="python">import hashlib import os def generate_file_md5(rootdir, filename): m = hashlib.md5() with open(os.path.join(rootdir, filename), "rb") as f: buf = f.read() while buf: m.update(buf) buf = f.read() return m.hexdigest()</code>
Menyemak silang cincang yang dikira dengan alat luaran seperti jacksum disyorkan untuk mengesahkan ketepatan.
Atas ialah kandungan terperinci Bagaimana untuk Hash Fail Besar dalam Python tanpa Penggunaan Memori yang Berlebihan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!