Python Forensics - funkcja skrótu

ZA hash functionjest definiowana jako funkcja, która odwzorowuje dużą ilość danych na stałą wartość o określonej długości. Ta funkcja zapewnia, że ​​te same dane wejściowe skutkują tym samym wyjściem, które jest faktycznie zdefiniowane jako suma skrótu. Suma hash zawiera cechę z określonymi informacjami.

Przywrócenie tej funkcji jest praktycznie niemożliwe. Dlatego każdy atak strony trzeciej, taki jak atak brutalnej siły, jest praktycznie niemożliwy. Również ten rodzaj algorytmu jest nazywanyone-way cryptographic algorithm.

Idealna kryptograficzna funkcja skrótu ma cztery główne właściwości -

  • Obliczenie wartości skrótu dla dowolnego wejścia musi być łatwe.
  • Wygenerowanie oryginalnych danych wejściowych z jego skrótu musi być niewykonalne.
  • Modyfikacja danych wejściowych bez zmiany skrótu musi być niewykonalna.
  • Znalezienie dwóch różnych danych wejściowych z tym samym hashem musi być niewykonalne.

Przykład

Rozważmy następujący przykład, który pomaga w dopasowywaniu haseł przy użyciu znaków w formacie szesnastkowym.

import uuid
import hashlib
  
def hash_password(password):
   # userid is used to generate a random number
   salt = uuid.uuid4().hex #salt is stored in hexadecimal value
   return hashlib.sha256(salt.encode() + password.encode()).hexdigest() + ':' + salt
     
def check_password(hashed_password, user_password):
   # hexdigest is used as an algorithm for storing passwords
   password, salt = hashed_password.split(':')
   return password == hashlib.sha256(salt.encode()
      + user_password.encode()).hexdigest()

new_pass = raw_input('Please enter required password ')
hashed_password = hash_password(new_pass)
print('The string to store in the db is: ' + hashed_password)
old_pass = raw_input('Re-enter new password ')

if check_password(hashed_password, old_pass):
   print('Yuppie!! You entered the right password')
else:
   print('Oops! I am sorry but the password does not match')

Schemat blokowy

Wyjaśniliśmy logikę tego programu za pomocą następującego schematu blokowego -

Wynik

Nasz kod wygeneruje następujący wynik -

Hasło wprowadzone dwukrotnie jest zgodne z funkcją skrótu. Gwarantuje to, że dwukrotnie wprowadzone hasło jest dokładne, co pomaga w zebraniu przydatnych danych i zapisaniu ich w zaszyfrowanym formacie.