Échange de clés Diffie-Hellman.
Alice et Bob utilisent l'échange de clés Diffie-Hellman pour partager des secrets. Ils commencent par des nombres premiers, choisissent des clés privées, génèrent et échangent des clés publiques, puis génèrent une clé secrète partagée.
Le programme de test fournit les nombres premiers p et g.
Alice choisit une clé privée, a, supérieure à 1 et inférieure à p. Bob fait de même pour choisir une clé privée b.
Alice calcule une clé publique A.
A = gᵃ mod p
En utilisant les mêmes p et g, Bob calcule de la même façon une clé publique B à partir de sa clé privée b.
Alice et Bob échangent leurs clés publiques. Alice calcule la clé secrète s.
s = Bᵃ mod p
Bob calcule
s = Aᵇ mod p
Les calculs donnent le même résultat ! Alice et Bob partagent désormais la clé secrète s.
Une solution possible pour cet exercice consiste à implémenter ta propre fonction d'exponentiation modulaire. Pour en savoir plus, consulte la page suivante.
De nombreuses implémentations ne fonctionnent pas pour tout le domaine des entrées. Il existe des tests supplémentaires facultatifs qui aident à vérifier que toutes les entrées valides produisent des résultats valides.
Pour exécuter les tests bonus, retire l'attribut #[ignore] et lance les tests avec la fonctionnalité big-primes, comme ceci :
$ cargo test --features big-primes
Inscris-toi sur Exercism pour apprendre et maîtriser Rust avec 99 exercices, et un vrai mentorat humain, le tout gratuitement.