Üreten bir dosyanın MD5 sağlama toplamı?
Python dosyaların bir listesi (ve kontrol) MD5 sağlama üreten herhangi bir basit bir yolu var mı? (Üzerinde çalıştığım küçük bir program var, ve dosyaları sağlaması teyit etmek istiyorum).
CEVAP
Güzel hatıralar, bir bir yolu varverimsiz.
tek dosya:
print hashlib.md5(open(full_path, 'rb').read()).hexdigest()
dosya listesi:
import hashlib
[(fname, hashlib.md5(open(fname, 'rb').read()).digest()) for fname in fnamelst]
Ancak, MD5 kırık bilinir ve (IMHO) burada aslında yapmanız gereken ne kadar korkutucu admin uyarıları ile gelip kütüphaneden kaldırıldı:
import hashlib
[(fname, hashlib.sha256(open(fname, 'rb').read()).digest()) for fname in fnamelst]
Eğer sadece Özet değerinde 128 bit istiyorsanız .digest()[:16]
yapabilirsiniz.
Bu senin dizilerini, her başlığın kendi dosya adını içeren ve karma bir liste verecektir.
Yine şiddetle MD5 kullanmanız soru. En azından SHA1 kullanıyor olması gerekir. Bazı insanlar için MD5 kullanmadığınız sürece bu 'şifreli' amaçlar, iyisin. Ama böyle bir eğilim başlangıçta beklenenden daha kapsamı daha geniş olması ve rahat güvenlik açığı analizi tamamen kusurlu olabilir. En iyisi kapı dışarı doğru algoritmayı kullanarak alışkanlığı olsun. Harf farklı bir sürü yazım sadece, hepsi bu. O kadar da zor değil.
Burada daha karmaşık, ama bir şekildebellek verimli:
import hashlib
def hashfile(afile, hasher, blocksize=65536):
buf = afile.read(blocksize)
while len(buf) > 0:
hasher.update(buf)
buf = afile.read(blocksize)
return hasher.digest()
[(fname, hashfile(open(fname, 'rb'), hashlib.md5())) for fname in fnamelst]
Ve yine MD5 beri kırık ve gerçekten hiç artık kullanılmamalıdır:
import hashlib
def hashfile(afile, hasher, blocksize=65536):
buf = afile.read(blocksize)
while len(buf) > 0:
hasher.update(buf)
buf = afile.read(blocksize)
return hasher.digest()
[(fname, hashfile(open(fname, 'rb'), hashlib.sha256())) for fname in fnamelst]
Yine, eğer sadece 128 bitlik Özet değerinde istiyorsanız hashfile(...)
çağrısının [:16]
koyabilirsiniz.
C büyük dosyalar için bir sağlama topl...
Nasıl C SHA1 Dosya Sağlama toplamı yap...
Nasıl geçerli dosyanın tam yolunu komu...
Üreten benim inşa parçası olarak bir X...
Karma Kodu ve Sağlama - 'farkı ne...