RSA計算器 - 公開金鑰加密與解密工具
產生RSA金鑰對,加密與解密數字訊息——用於學習公開金鑰密碼學與數論的互動工具。
輸入兩個不同的質數(p和q)、一個公開指數(e),以及可選的明文數字,即可使用RSA演算法進行加密與解密。
RSA計算器 - 公開金鑰加密與解密工具
產生RSA金鑰對,加密與解密數字訊息——用於學習公開金鑰密碼學與數論的互動工具。
關於RSA計算器
RSA(Rivest–Shamir–Adleman)是全球部署最廣泛的公開金鑰密碼系統。它支撐HTTPS、電子郵件加密、數位簽章與安全軟體散布。理解RSA需要熟悉三個數論概念:質因數分解、模運算與歐拉函數——本計算器會讓這些概念變得互動且具體可見。
RSA金鑰產生流程從選擇兩個不同的大質數p和q開始。基於教學目的,本工具使用小質數,但真正的RSA實作會使用數千位數的質數。模數n計算為n = p × q。接著計算歐拉函數φ(n) = (p − 1)(q − 1)。公開指數e必須滿足1 < e < φ(n)且gcd(e, φ(n)) = 1——最常見的選擇是3、17和65,537(費馬質數),其中65,537幾乎用於所有正式系統。私密指數d是e在模φ(n)下的乘法反元素,可用擴展歐幾里得演算法求得:d ≡ e⁻¹ (mod φ(n))。
加密使用公開金鑰(e, n):密文C = Mᵉ mod n,其中M是明文整數。解密使用私密金鑰(d, n):明文M = Cᵈ mod n。RSA的安全性建立在實務上幾乎不可能將大型n分解為其質數組成p和q之上——目前沒有已知的古典多項式時間演算法能解決此問題。
這個RSA計算器是為學習而設計,不適合生產安全用途。它使用JavaScript BigInt進行精確整數運算,因此對瀏覽器能處理的任何質數輸入,結果在數學上都是正確的。不過,真實世界的安全系統需要至少2,048位元的質數、適當的填充方案(OAEP),以及密碼學安全的隨機數產生器——這些都不是本教學工具提供的功能。
本計算器的常見用途包括:電腦科學課程中的密碼學與數論學習;驗證RSA金鑰產生的手算結果;探索e的微小變化或p、q的選擇如何影響私密金鑰d;以及建立直覺,理解為什麼分解n是RSA安全性的核心難題。
使用計算器時,為p和q輸入任意兩個不同的質數,選擇一個與φ(n)互質的公開指數e,可選輸入一個小於n的數字訊息,然後按一下產生。工具會立即顯示n、φ(n)、d,以及加密與解密後的值,讓你確認解密是否還原原始訊息。
RSA計算器範例
三個使用小質數進行金鑰產生與訊息加密的完整範例。
| 輸入(p, q, e, M) | 主要結果 | 說明 |
|---|---|---|
| p=61, q=53, e=17, M=65 | n=3233, φ=3120, d=2753, C=2790, M′=65 | 經典教科書範例。n=3233,φ(n)=3120。d=17⁻¹ mod 3120 = 2753。加密65:65¹⁷ mod 3233 = 2790。解密:2790²⁷⁵³ mod 3233 = 65 ✓ |
| p=7, q=11, e=13, M=5 | n=77, φ=60, d=37, C=26, M′=5 | 適合手算驗證的小質數。φ(77)=60,gcd(13,60)=1 ✓。d=13⁻¹ mod 60=37。加密5:5¹³ mod 77=26。解密26³⁷ mod 77=5 ✓ |
| p=17, q=19, e=5, M=88 | n=323, φ=288, d=173, C=200, M′=88 | 中等範例。φ(323)=288,gcd(5,288)=1 ✓。d=5⁻¹ mod 288=173。加密88:88⁵ mod 323=200。解密200¹⁷³ mod 323=88 ✓ |
如何使用RSA計算器
- 在「質數 p」和「質數 q」欄位中輸入兩個不同的質數。可先使用61和53這類常見小質數來驗證經典範例。
- 輸入一個公開指數e,它必須大於1、小於φ(n) = (p−1)(q−1),且與φ(n)互質。常見選擇是3、17或65537。
- 可選地在訊息欄位中輸入一個小於n(p × q)的數字明文訊息M。
- 按一下「產生金鑰並加密」。計算器會顯示模數n、歐拉函數φ(n)、私密金鑰d,以及——若你輸入了訊息——密文C和解密後的M′。
- 確認解密值M′與原始訊息M相符,以證明RSA往返流程正確運作。
RSA計算器常見問題
RSA中的p、q、n、e和d是什麼?
p和q是你選擇的兩個不同質數。n = p × q是公開模數。e是公開指數,會公開分享。d是私密指數,必須保密。(e, n)這一對是公開金鑰;(d, n)是私密金鑰。任何人都可以用(e, n)加密訊息,但只有持有d的人才能解密。
為什麼e必須與φ(n)互質?
私密金鑰d是e在模φ(n)下的模反元素。只有當gcd(e, φ(n)) = 1,也就是兩者沒有共同因數時,模反元素才存在。若e與φ(n)共用某個因數,就不會有有效的d,RSA金鑰產生會失敗。
為什麼訊息M必須小於n?
RSA加密是Mᵉ mod n。若M ≥ n,模約簡會遺失資訊——兩個不同訊息可能產生相同密文,使解密結果不明確。實務上,真正的RSA實作會使用OAEP填充訊息,以確保始終滿足此限制。
這個RSA計算器可以安全地用於真實用途嗎?
不可以。本工具僅供教學使用。正式RSA需要至少2,048位元(約617個十進位數字)的質數、密碼學安全的隨機質數產生,以及OAEP等填充方案。小質數很容易被分解,絕不應用來保護真實資料。
歐拉函數φ(n)是什麼?
歐拉函數φ(n)計算從1到n中有多少整數與n互質。對於n = p × q且p、q為不同質數的情況,φ(n) = (p − 1)(q − 1)。這個值是RSA的核心,因為它定義了密鑰關係d ≡ e⁻¹ (mod φ(n))成立的群。
RSA解密如何證明私密金鑰有效?
根據歐拉定理,對任何與n互質的M,都有M^φ(n) ≡ 1 (mod n)。由於e × d ≡ 1 (mod φ(n)),因此(Mᵉ)ᵈ = M^(ed) = M^(1 + k·φ(n)) = M × (M^φ(n))^k ≡ M × 1^k = M (mod n)。所以只要M < n,解密總能還原原始訊息。