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功能來執行測試,像這樣:
$ cargo test --features big-primes