學習軌道
/
Rust
Rust
/
練習
/
Diffie-Hellman
Diffie-Hellman

Diffie-Hellman

簡單

說明

Diffie-Hellman 金鑰交換。

Alice 與 Bob 使用 Diffie-Hellman 金鑰交換來共享秘密。 他們從質數開始,挑選私鑰,產生並交換公鑰,接著產生一把共享密鑰。

步驟 0

測試程式會提供質數 p 和 g。

步驟 1

Alice 挑選一把私鑰 a,它大於 1 且小於 p。 Bob 也同樣挑選一把私鑰 b。

步驟 2

Alice 計算出公鑰 A。

A = gᵃ mod p

Bob 使用相同的 p 和 g,同樣從他的私鑰 b 計算出公鑰 B。

步驟 3

Alice 與 Bob 交換公鑰。 Alice 計算出密鑰 s。

s = Bᵃ mod p

Bob 計算

s = Aᵇ mod p

兩邊的計算會得到相同的結果! Alice 與 Bob 現在共享秘密 s。

這道練習的其中一種解法,是自己實作模冪運算的函式。想進一步了解的話,可以參考這一頁。

額外加分

許多實作無法處理完整的輸入範圍。我們另外定義了一些選用的測試,用來確保所有合法的輸入都能產生正確的結果。

如要執行加分測試,請移除#[ignore]標記,並加上big-primes功能來執行測試,像這樣:

$ cargo test --features big-primes
透過 GitHub 編輯 連結會在新視窗或分頁中開啟
Rust Exercism

準備好開始 Diffie-Hellman 了嗎?

註冊 Exercism,透過 99 個練習 和真人引導來學習並精通 Rust,全部免費。