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, después, generan una clave secreta compartida.
El programa de pruebas suministra 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
Usando 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 las 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 la clave secreta s.
Una posible solución para este ejercicio es implementar tu propia función de exponenciación modular. Para saber más al respecto, consulta la siguiente página.
Muchas implementaciones no funcionan para todo el dominio de entradas. Hay pruebas opcionales adicionales definidas que ayudan a garantizar que todas las entradas válidas produzcan resultados válidos.
Para ejecutar las pruebas de puntos extra, elimina el flag #[ignore] y ejecuta las pruebas con
la característica 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.