Dosyanın Özetini Bulmak için Python Programı

Bu makalede, bir dosyanın karmasını bulmayı ve görüntülemeyi öğreneceksiniz.

Bu örneği anlamak için, aşağıdaki Python programlama konuları hakkında bilgi sahibi olmalısınız:

  • Python İşlevleri
  • Python Kullanıcı Tanımlı İşlevler
  • Python Dosyası G / Ç

Karma işlevler rastgele miktarda veri alır ve sabit uzunlukta bir bit dizesi döndürür. İşlevin çıktısına özet mesaj adı verilir.

Kimlik doğrulama amacıyla kriptografide yaygın olarak kullanılırlar. MD5, SHA-1 vb. Gibi birçok karma işlevi vardır. Kriptografide karma işlevler hakkında daha fazla bilgi edinmek için bu sayfaya bakın.

Bu örnekte, bir dosyanın nasıl hash hale getirileceğini göstereceğiz. SHA-1 hashing algoritmasını kullanacağız. SHA-1'in özeti 160 bit uzunluğundadır.

Dosyadaki verileri tek seferde beslemiyoruz, çünkü bazı dosyalar aynı anda belleğe sığacak kadar büyüktür. Dosyayı küçük parçalara bölmek, işlem belleğini verimli hale getirecektir.

Karma Bulmak için Kaynak Kodu

 # Python rogram to find the SHA-1 message digest of a file # importing the hashlib module import hashlib def hash_file(filename): """"This function returns the SHA-1 hash of the file passed into it""" # make a hash object h = hashlib.sha1() # open file for reading in binary mode with open(filename,'rb') as file: # loop till the end of the file chunk = 0 while chunk != b'': # read only 1024 bytes at a time chunk = file.read(1024) h.update(chunk) # return the hex representation of digest return h.hexdigest() message = hash_file("track1.mp3") print(message) 

Çıktı

 633d7356947eec543c50b76a1852f92427f4dca9 

Bu programda dosyayı ikili modda açıyoruz. Modülde karma işlevler mevcuttur hashlib. Bir döngü kullanarak dosyanın sonuna kadar döngü yapıyoruz while. Sona ulaştığımızda boş bayt nesnesi alıyoruz.

Her yinelemede dosyadan sadece 1024 bayt okuruz (bu değer isteğimize göre değiştirilebilir) ve hashing fonksiyonunu güncelleriz.

Son olarak, hexdigest()yöntemi kullanarak onaltılık gösterimde özet mesajı döndürüyoruz .

Ilginç makaleler...