Программа Python для поиска хэша файла

В этой статье вы научитесь находить хэш файла и отображать его.

Чтобы понять этот пример, вы должны знать следующие темы программирования Python:

  • Функции Python
  • Пользовательские функции Python
  • Ввод-вывод файла Python

Хеш-функции принимают произвольный объем данных и возвращают битовую строку фиксированной длины. Вывод функции называется дайджест-сообщением.

Они широко используются в криптографии для целей аутентификации. Существует множество хеш-функций, таких как MD5, SHA-1 и т. Д. Обратитесь к этой странице, чтобы узнать больше о хэш-функциях в криптографии.

В этом примере мы покажем, как хэшировать файл. Мы будем использовать алгоритм хеширования SHA-1. Дайджест SHA-1 имеет длину 160 бит.

Мы не загружаем данные из файла сразу, потому что некоторые файлы очень большие и не помещаются в памяти сразу. Разделение файла на небольшие части сделает память процесса более эффективной.

Исходный код для поиска хэша

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

Вывод

 633d7356947eec543c50b76a1852f92427f4dca9 

В этой программе мы открываем файл в двоичном режиме. В hashlibмодуле доступны хеш-функции . Мы зацикливаемся до конца файла с помощью whileцикла. Дойдя до конца, мы получаем пустой объект bytes.

На каждой итерации мы читаем из файла только 1024 байта (это значение может быть изменено по нашему желанию) и обновляем хеш-функцию.

Наконец, мы возвращаем дайджест сообщения в шестнадцатеричном представлении с помощью hexdigest()метода.

Интересные статьи...