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. | ||
| ++++ | ++++ | ||