У овом чланку ћете научити како да пронађете хеш датотеке и прикажете је.
Да бисте разумели овај пример, требало би да имате знање о следећим Питхон програмским темама:
- Питхон функције
- Питхон кориснички дефинисане функције
- Улаз / излаз датотеке Питхон
Хасх функције узимају произвољну количину података и враћају битни низ фиксне дужине. Излаз функције назива се дигест порука.
Они се широко користе у криптографији у сврхе аутентификације. Постоји много функција хеширања попут МД5, СХА-1 итд. Погледајте ову страницу да бисте сазнали више о хеш функцијама у криптографији.
У овом примеру ћемо илустровати како хеширати датотеку. Користићемо алгоритам хеширања СХА-1. Сажетак СХА-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)
Оутпут
633д7356947еец543ц50б76а1852ф92427ф4дца9
У овом програму датотеку отварамо у бинарном режиму. Хасх функције су доступне у hashlib
модулу. Петљу вршимо до краја датотеке помоћу while
петље. По доласку на крај добијамо празан бајт објекат.
У свакој итерацији из датотеке читамо само 1024 бајта (ова вредност се може променити према нашој жељи) и ажурирамо функцију хеширања.
На крају, помоћу hexdigest()
методе враћамо сажету поруку у хексадецималном представљању .