Diffie-Hellman-Schlüsselaustausch.
Alice und Bob verwenden den Diffie-Hellman-Schlüsselaustausch, um Geheimnisse auszutauschen. Sie beginnen mit Primzahlen, wählen private Schlüssel, erzeugen öffentliche Schlüssel, tauschen sie aus und erzeugen anschließend einen gemeinsamen geheimen Schlüssel.
Das Testprogramm stellt die Primzahlen p und g bereit.
Alice wählt einen privaten Schlüssel a, der größer als 1 und kleiner als p ist. Bob macht dasselbe, um einen privaten Schlüssel b zu wählen.
Alice berechnet einen öffentlichen Schlüssel A.
A = gᵃ mod p
Mit denselben p und g berechnet Bob auf die gleiche Weise einen öffentlichen Schlüssel B aus seinem privaten Schlüssel b.
Alice und Bob tauschen ihre öffentlichen Schlüssel aus. Alice berechnet den geheimen Schlüssel s.
s = Bᵃ mod p
Bob berechnet
s = Aᵇ mod p
Die Berechnungen liefern dasselbe Ergebnis! Jetzt kennen Alice und Bob beide das Geheimnis s.
Eine mögliche Lösung für diese Übung ist, deine eigene Funktion für die modulare Exponentiation zu implementieren. Mehr darüber erfährst du auf der folgenden Seite.
Viele Implementierungen funktionieren nicht für den gesamten Bereich möglicher Eingaben. Es gibt zusätzliche optionale Tests, die sicherstellen helfen, dass alle gültigen Eingaben gültige Ergebnisse liefern.
Um die Bonustests auszuführen, entferne das Flag #[ignore] und führe die Tests mit dem Feature big-primes aus, so wie hier:
$ cargo test --features big-primes
Melde dich bei Exercism an, um Rust mit 99 Übungen und echtem menschlichen Mentoring zu lernen und zu meistern, alles kostenlos.