Програма 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цикл. Досягнувши кінця, ми отримуємо порожні байти-об'єкти.

У кожній ітерації ми зчитуємо з файлу лише 1024 байта (це значення може бути змінено відповідно до нашого бажання) та оновлюємо функцію хешування.

Нарешті, ми повертаємо дайджест-повідомлення в шістнадцятковому поданні, використовуючи hexdigest()метод.

Цікаві статті...