Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen der Seite angezeigt.
Beide Seiten, vorherige Überarbeitung Vorherige Überarbeitung Nächste Überarbeitung | Vorherige Überarbeitung | ||
gf_informatik:verschluesselung:signaturen [2022-03-17 21:50] – hof | gf_informatik:verschluesselung:signaturen [2022-03-25 15:28] (aktuell) – [Aufgabe XOR-Hash] hof | ||
---|---|---|---|
Zeile 7: | Zeile 7: | ||
Weil nur Alice den _private key_ kennt, ist damit bewiesen, dass Alice ihn verschlüsselt hat. | Weil nur Alice den _private key_ kennt, ist damit bewiesen, dass Alice ihn verschlüsselt hat. | ||
- | {{: | + | {{: |
Damit haben wir nicht nur die Möglichkeit, | Damit haben wir nicht nur die Möglichkeit, | ||
Zeile 15: | Zeile 15: | ||
In der Praxis ist es zu mühsam, den ganzen Text zu verschlüsseln, | In der Praxis ist es zu mühsam, den ganzen Text zu verschlüsseln, | ||
- | {{: | + | {{: |
+ | |||
+ | Für die Verifikation der Unterschrift müssen wir nur überprüfen, | ||
+ | |||
+ | {{: | ||
Die Hashfunktion soll folgende Eigenschaften haben: | Die Hashfunktion soll folgende Eigenschaften haben: | ||
Zeile 25: | Zeile 29: | ||
- sonst könnte Mallory einen anderen Text in die Nachricht schleusen, die Signatur wäre immer noch korrekt | - sonst könnte Mallory einen anderen Text in die Nachricht schleusen, die Signatur wäre immer noch korrekt | ||
- sonst könnte Mallory den Text ein bisschen anpassen, die Signature wäre immer noch korrekt | - sonst könnte Mallory den Text ein bisschen anpassen, die Signature wäre immer noch korrekt | ||
+ | ++++ | ||
+ | |||
+ | ### Aufgabe XOR-Hash | ||
+ | |||
+ | Schreibe eine Funktion, die alle Zahlen einer Liste mit `XOR` kombiniert. | ||
+ | |||
+ | <nodisp 1> | ||
+ | ++++Lösung: | ||
+ | <code python> | ||
+ | def xor_hash(numbers): | ||
+ | hash = 0 | ||
+ | for n in numbers: | ||
+ | hash = hash ^ n | ||
+ | return hash | ||
+ | |||
+ | print(xor_hash([42, | ||
+ | </ | ||
+ | ++++ | ||
+ | </ | ||
+ | |||
+ | **Teil 2:** Schreibe eine Funktion `word_hash` die alle Zeichen eines Worts in ASCII-Codes übersetzt, bevor sie mit XOR verbunden werden. | ||
+ | |||
+ | |||
+ | <nodisp 1> | ||
+ | ++++Lösung: | ||
+ | <code python> | ||
+ | def word_hash(text): | ||
+ | hash = 0 | ||
+ | for letter in text: | ||
+ | hash = hash ^ ord(letter) | ||
+ | return hash | ||
+ | |||
+ | print(word_hash(" | ||
+ | </ | ||
+ | ++++ | ||
+ | </ | ||
+ | |||
+ | Erfüllt die XOR-Hashfunktion die obigen Bedingungen? | ||
+ | |||
+ | ++++Antwort: | ||
+ | Nein - jeweils zwei gleiche Buchstaben heben sich gegenseitig auf. Es ist damit einfach, eine Nachricht so zu modifizieren, | ||
+ | |||
+ | `Hallo` und `Hallo leben nebel` haben den gleichen Hashwert. | ||
++++ | ++++ |