Python Forensics - Hash-Funktion

EIN hash functionist definiert als die Funktion, die eine große Datenmenge einem festen Wert mit einer bestimmten Länge zuordnet. Diese Funktion stellt sicher, dass dieselbe Eingabe zu derselben Ausgabe führt, die tatsächlich als Hash-Summe definiert ist. Die Hash-Summe enthält ein Merkmal mit spezifischen Informationen.

Diese Funktion kann praktisch nicht zurückgesetzt werden. Daher ist ein Angriff Dritter wie ein Brute-Force-Angriff praktisch unmöglich. Diese Art von Algorithmus wird auch genanntone-way cryptographic algorithm.

Eine ideale kryptografische Hash-Funktion hat vier Haupteigenschaften:

  • Es muss einfach sein, den Hashwert für eine bestimmte Eingabe zu berechnen.
  • Es muss unmöglich sein, die ursprüngliche Eingabe aus seinem Hash zu generieren.
  • Es muss unmöglich sein, die Eingabe zu ändern, ohne den Hash zu ändern.
  • Es muss unmöglich sein, zwei verschiedene Eingaben mit demselben Hash zu finden.

Beispiel

Betrachten Sie das folgende Beispiel, das beim Abgleichen von Kennwörtern mithilfe von Zeichen im Hexadezimalformat hilft.

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')

Flussdiagramm

Wir haben die Logik dieses Programms anhand des folgenden Flussdiagramms erläutert:

Ausgabe

Unser Code erzeugt die folgende Ausgabe:

Das zweimal eingegebene Passwort stimmt mit der Hash-Funktion überein. Dadurch wird sichergestellt, dass das zweimal eingegebene Kennwort korrekt ist. Dies hilft beim Sammeln nützlicher Daten und beim Speichern in einem verschlüsselten Format.