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