vault backup: 2023-07-20 10:45:56

This commit is contained in:
2023-07-20 10:45:56 +02:00
parent c9f37b0707
commit d55c83e7ce
3 changed files with 2081 additions and 37 deletions

View File

@@ -2,17 +2,12 @@
## a
Kryptographische Hashfunktionen sind spezielle Funktionen mit verschiedenen Eigenschaften, die sie nützlich für Kryptographie machen. Diese sollten folgende Eigenschaften haben:
1. **Deterministisch**: Für jede Eingabe liefert die Hashfunktion immer den gleichen Hashwert. Wenn Sie die gleiche Nachricht erneut durch die Funktion senden, erhalten Sie immer den gleichen Ausgang.
1. **Deterministisch**: Für 2 identische Urbilder liefert die Hashfunktion immer den gleichen Hashwert.
2. **Schnelle Berechnung**: Für jede gegebene Eingabe sollte die Berechnung des Hashwerts effizient und schnell sein.
5. **Kollisionsresistenz**: Es sollte extrem schwierig sein, zwei verschiedene Eingaben zu finden, die den gleichen Hashwert erzeugen. Dies ist wichtig, um die Integrität von Daten in vielen Anwendungen zu gewährleisten. Resitesz gegen Urbildangriffe und zweites Urbildangriff.
3. **Preimage-Resistenz**: Es sollte rechnerisch unpraktisch sein, die ursprüngliche Eingabe anhand ihres Hashwerts zu ermitteln. Diese Eigenschaft ist manchmal auch als "Einwegfunktion" bekannt.
6. **Feste Ausgabegröße**: Unabhängig von der Größe der Eingabe sollte die Ausgabe immer eine konstante Länge haben.
4. **Kleine Änderungen in der Eingabe erzeugen große Änderungen in der Ausgabe**: Eine Änderung, selbst eine sehr kleine, in der Eingabe sollte eine völlig andere Ausgabe erzeugen.
5. **Kollisionsresistenz**: Es sollte extrem schwierig sein, zwei verschiedene Eingaben zu finden, die den gleichen Hashwert erzeugen. Dies ist wichtig, um die Integrität von Daten in vielen Anwendungen zu gewährleisten.
6. **Feste Ausgabegröße**: Unabhängig von der Größe der Eingabe sollte die Ausgabe immer eine konstante Länge haben.
## b
@@ -119,8 +114,8 @@ Um das Padding für SHA-256 für den Text "hello, world" durchzuführen, folgen
2. **ein 1-Bit am Ende hinzufügen**:
0110100001100101011011000110110001101111001011000010000001110111011011110111001001101100011001001
3. **Nullen hinzufügen**: Wir fügen Nullen hinzu, bis die Länge der Nachricht modulo 512 gleich 448 ist. Da unsere Nachricht derzeit 97 Bit lang ist, fügen wir 447-97=350 Nullen hinzu:
0110100001100101011011000110110001101111001011000010000001110111011011110111001001101100011001001 + 350 Nullen
3. **Nullen hinzufügen**: Wir fügen Nullen hinzu, bis die Länge der Nachricht modulo 512 gleich 448 ist. Da unsere Nachricht derzeit 97 Bit lang ist, fügen wir 448-97=351 Nullen hinzu:
0110100001100101011011000110110001101111001011000010000001110111011011110111001001101100011001001 + 351 Nullen
4. **Länge der Originalnachricht hinzufügen**: Schließlich fügen wir die Länge der ursprünglichen Nachricht als 64-Bit-Binärzahl hinzu. Die Originalnachricht war 96 Bit lang, was in Binär 1100000 ist. Wir fügen Nullen vorne hinzu, um 64 Bit zu erhalten:
@@ -128,6 +123,6 @@ Um das Padding für SHA-256 für den Text "hello, world" durchzuführen, folgen
Unsere endgültige, gepaddete Nachricht wird dann:
0110100001100101011011000110110001101111001011000010000001110111011011110111001001101100011001001 + 350 Nullen + 00000000000000000000000000000000000000000000000000000001100000
0110100001100101011011000110110001101111001011000010000001110111011011110111001001101100011001001 + 351 Nullen + 00000000000000000000000000000000000000000000000000000001100000