У цій статті ви навчитеся знаходити хеш файлу та відображати його.
Щоб зрозуміти цей приклад, ви повинні знати наступні теми програмування на 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()
метод.