Wie kann ich einen Text durch ein bestimmt Hashfunktion jagen mit Python?

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Um einen Text mit der angegebenen Hashfunktion zu hashen, könntest du zunächst den Text in eine Liste von Zeichen umwandeln und dann eine Schleife verwenden, um jedes Zeichen der Liste zu hashen. Du könntest zum Beispiel eine Funktion wie die folgende erstellen:

def hash_string(s, a, b, m):
  h = 0
  for c in s:
    h = (h + a + b * ord(c)) % m
  return h

Die ord-Funktion gibt den ASCII-Code des übergebenen Zeichens zurück, wodurch du das Zeichen in eine Ganzzahl umwandeln kannst. Die hash_string-Funktion nimmt den Text als String s und die anderen Parameter a, b und m entgegen und gibt dann das Hash-Ergebnis als Ganzzahl zurück. Um den Text einer TXT-Datei zu hashen, könntest du die Datei zunächst lesen und dann den Text an die hash_string-Funktion übergeben. Hier ist ein Beispiel, wie das aussehen könnte:

# Öffne die TXT-Datei im Lesemodus
with open('text.txt', 'r') as f:
  # Lese den Text aus der Datei
  text = f.read()

# Rufe die hash_string-Funktion auf, um den Text zu hashen
hashed_text = hash_string(text, a, b, m)

print(hashed_text)

Hoffe das hilft! Lass mich wissen, wenn du noch weitere Fragen hast. 🙂

niphii 
Fragesteller
 19.12.2022, 00:32

Das klingt schonmal gut, habe erstmal soweit beim Überfliegen alles verstanden, aber ich muss mich morgen noch dran setzen! Danke! :)

1

Eine Hashfunktion ist keine Verschlüsselung. Bei einer Verschlüsselung gibt es einen Schlüssel, mit dem man das Ergebnis wieder entschlüsseln kann. Aus einem Hashwert kann man den Klartext nicht wiederherstellen. Man kann nur überprüfen, ob ein Klartext einen bestimmten Hashwert liefert, indem man eine bestimmte Hashfunktion darauf anwendet.

Kryptografische Hashfunktionen sollte man nicht selbst implementieren. Man sollte auf eine bereits vorhandene Implementierung zurückgreifen, die von Experten ausgiebig getestet wurde. Für Python gibt es z.B. hashlib. Codebeispiele findest du in der Dokumentation.