Diffie-Hellman 密钥交换。
Alice 和 Bob 使用 Diffie-Hellman 密钥交换来共享秘密。 他们从质数开始,选取私钥,生成并交换公钥,然后生成共享的密钥。
测试程序会提供质数 p 和 g。
Alice 选取一个私钥 a,它大于 1 且小于 p。 Bob 同样选取一个私钥 b。
Alice 计算出公钥 A。
A = gᵃ mod p
Bob 使用相同的 p 和 g,同样根据他的私钥 b 计算出公钥 B。
Alice 和 Bob 交换公钥。 Alice 计算出密钥 s。
s = Bᵃ mod p
Bob 计算出
s = Aᵇ mod p
两次计算得到的结果相同! 现在 Alice 和 Bob 共享密钥 s。
这道练习的一种解法是自己实现一个模幂运算函数。想了解更多,可以参考这个页面。
很多实现在输入的全部取值范围内并不能正常工作。 我们还定义了一些额外的可选测试,用来帮助确保所有合法的输入都能得到正确的结果。
要运行这些加分测试,请去掉 #[ignore] 标记,并使用 big-primes feature 来执行测试,像这样:
$ cargo test --features big-primes