Intercambio de claves Diffie-Hellman.
Alice y Bob usan el intercambio de claves Diffie-Hellman para compartir secretos. Empiezan con números primos, eligen claves privadas, generan y comparten claves públicas y, por último, generan una clave secreta compartida.
El programa de prueba proporciona los números primos p y g.
Alice elige una clave privada, a, mayor que 1 y menor que p. Bob hace lo mismo para elegir una clave privada b.
Alice calcula una clave pública A.
A = gᵃ mod p
Con los mismos p y g, Bob calcula de forma similar una clave pública B a partir de su clave privada b.
Alice y Bob intercambian sus claves públicas. Alice calcula la clave secreta s.
s = Bᵃ mod p
Bob calcula
s = Aᵇ mod p
¡Los cálculos producen el mismo resultado! Ahora Alice y Bob comparten el secreto s.
Una posible solución para este ejercicio es implementar tu propia función de exponenciación modular. Para aprender más sobre esto, consulta la siguiente página.
Muchas implementaciones no funcionan para todo el dominio de argumentos. Hay tests opcionales adicionales definidos que ayudan a garantizar que todos los argumentos válidos produzcan resultados válidos.
Para ejecutar los tests de bonificación, quita el flag #[ignore] y ejecuta los tests con la feature big-primes, así:
$ cargo test --features big-primes
Regístrate en Exercism para aprender y dominar Rust con 99 ejercicios y mentoría humana real, todo gratis.