Wie kann man ein SHA1 Hash in Python3 decoden?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Ein Hash ist eine Prüfsumme und keine Kyptifizierung.

Hashes kann man auf Gleichheit prüfen, aber bei langen wie SHA1 kann man aus einem Hash keine Quelldaten erzeugen. Genau das ist gewollt.

Du hast eine Menge von Byte der Länge 0 ... unendlich. Diese werden per SHA1 auf 160 Bit = 20 Bytes abgebildet.

Spätestens, wenn du 21 Bytes in den Eingabe-Dateien hast, muss es SHA1-Kodes geben, die untereinander gleich sind, weil die Inputmenge größer als die Anzahl der Elemente in der Funktionsmenge ist.

Schon mal was von Hashfunktionen gehört? Man kann lediglich Kollisionen finden, die das gleiche Ergebnis liefern. Da hat man tatsächlich bei SHA1 Methoden gefunden, die das vereinfachen. Aber laut Wikipedia:

https://de.wikipedia.org/wiki/Secure_Hash_Algorithm

Im Februar 2017 veröffentlichten Google-Mitarbeiter eine erste Kollision von SHA-1. Sie erzeugten zwei verschiedene funktionierende PDF-Dateien mit gleichem SHA-1-Prüfwert unter enormem Aufwand. Eine einzelne CPU hätte etwa 6500 Jahre dafür benötigt.
Im Jahre 2019 benötigten öffentlich bekannte Chosen-Prefix-Angriffe 2 66,9 bis 2 69,4 SHA-1-Berechnungen, um Kollisionen zu finden. Das entsprach im Jahre 2017 100 GPU-Jahren Rechenkapazität. [6]

also immer noch nicht für Privatrechner sinnvoll durchführbar.

Hashfunktionen sind Einwegfunktionen.

Verschiedene Daten können den gleichen Hashwert haben und der Hashwert ist von konstanter Größe auch bei tausendmal größeren Daten, das könnte also von vornherein niemals umkehrbar sein.

Kurzgesagt: SHA-1 ist eine Hashfunktion und keine Verschlüsselung.

Dh du willst die Original-Datei aus dem Hash erhalten?

Da kann ich nur eins sagen: Vergiss es, geht nicht