Scambio di chiavi Diffie-Hellman.
Alice e Bob usano lo scambio di chiavi Diffie-Hellman per condividere dei segreti. Partono da numeri primi, scelgono le chiavi private, generano e condividono le chiavi pubbliche, poi generano una chiave segreta condivisa.
Il programma di test fornisce i numeri primi p e g.
Alice sceglie una chiave privata, a, maggiore di 1 e minore di p. Bob fa lo stesso per scegliere una chiave privata b.
Alice calcola una chiave pubblica A.
A = gᵃ mod p
Usando gli stessi p e g, Bob calcola allo stesso modo una chiave pubblica B dalla sua chiave privata b.
Alice e Bob si scambiano le chiavi pubbliche. Alice calcola la chiave segreta s.
s = Bᵃ mod p
Bob calcola
s = Aᵇ mod p
I calcoli producono lo stesso risultato! Ora Alice e Bob condividono la chiave segreta s.
Una possibile soluzione per questo esercizio è implementare una propria funzione di esponenziazione modulare. Per saperne di più, consulta la pagina seguente.
Molte implementazioni non funzionano per l'intero dominio degli input. Sono stati definiti dei test opzionali aggiuntivi che aiutano ad assicurarsi che tutti gli input validi producano risultati validi.
Per eseguire i test bonus, rimuovi il flag #[ignore] ed esegui i test con
la feature big-primes, in questo modo:
$ cargo test --features big-primes
Iscriviti a Exercism per imparare e padroneggiare Rust con 99 esercizi e il mentoring di persone reali, tutto gratis.