Troca de chaves Diffie-Hellman.
Alice e Bob usam a troca de chaves Diffie-Hellman para compartilhar segredos. Eles começam com números primos, escolhem chaves privadas, geram e compartilham chaves públicas e, em seguida, geram uma chave secreta compartilhada.
O programa de teste fornece os números primos p e g.
Alice escolhe uma chave privada, a, maior que 1 e menor que p. Bob faz o mesmo para escolher uma chave privada b.
Alice calcula uma chave pública A.
A = gᵃ mod p
Usando os mesmos p e g, Bob calcula de forma semelhante uma chave pública B a partir de sua chave privada b.
Alice e Bob trocam as chaves públicas. Alice calcula a chave secreta s.
s = Bᵃ mod p
Bob calcula
s = Aᵇ mod p
Os cálculos produzem o mesmo resultado! Agora Alice e Bob compartilham o segredo s.
Uma solução possível para este exercício é implementar sua própria função de exponenciação modular. Para saber mais a respeito, consulte a página a seguir.
Muitas implementações não funcionam para todo o domínio de entradas. Existem testes opcionais adicionais definidos que ajudam a garantir que todas as entradas válidas produzam resultados válidos.
Para rodar os testes de bônus, remova a flag #[ignore] e rode os testes com o recurso big-primes, assim:
$ cargo test --features big-primes
Crie sua conta no Exercism para aprender e dominar Rust com 99 exercícios e mentoria humana de verdade, tudo de graça.