Program w Pythonie do znajdowania skrótu pliku

W tym artykule dowiesz się, jak znaleźć skrót pliku i go wyświetlić.

Aby zrozumieć ten przykład, powinieneś znać następujące tematy programowania w Pythonie:

  • Funkcje Pythona
  • Funkcje zdefiniowane przez użytkownika w Pythonie
  • We / wy pliku Python

Funkcje skrótu pobierają dowolną ilość danych i zwracają ciąg bitów o stałej długości. Wynik funkcji nazywany jest komunikatem podsumowującym.

Są szeroko stosowane w kryptografii do celów uwierzytelniania. Istnieje wiele funkcji mieszających, takich jak MD5, SHA-1 itp. Odwiedź tę stronę, aby dowiedzieć się więcej o funkcjach mieszających w kryptografii.

W tym przykładzie zilustrujemy, jak haszować plik. Użyjemy algorytmu haszującego SHA-1. Skrót SHA-1 ma długość 160 bitów.

Nie dostarczamy danych z pliku naraz, ponieważ niektóre pliki są bardzo duże, aby zmieścić się w pamięci naraz. Podzielenie pliku na małe fragmenty sprawi, że pamięć procesu będzie wydajna.

Kod źródłowy do znalezienia skrótu

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

Wynik

 633d7356947eec543c50b76a1852f92427f4dca9 

W tym programie otwieramy plik w trybie binarnym. W hashlibmodule dostępne są funkcje skrótu . Wykonujemy pętlę do końca pliku za pomocą whilepętli. Po osiągnięciu końca otrzymujemy pusty obiekt bajtów.

W każdej iteracji odczytujemy z pliku tylko 1024 bajty (wartość tę można zmienić zgodnie z naszym życzeniem) i aktualizujemy funkcję haszującą.

Na koniec zwracamy skrót wiadomości w reprezentacji szesnastkowej przy użyciu hexdigest()metody.

Interesujące artykuły...