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=65n=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=5n=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=88n=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计算器

  1. 在“素数 p”和“素数 q”字段中输入两个不同的素数。可以先用61和53这类常见小素数来验证经典示例。
  2. 输入一个公钥指数e,它必须大于1、小于φ(n) = (p−1)(q−1),并且与φ(n)互素。常见选择是3、17或65537。
  3. 可选地在消息字段中输入一个小于n(p × q)的数字明文消息M。
  4. 点击“生成密钥并加密”。计算器会显示模数n、欧拉函数φ(n)、私钥d,以及——如果你输入了消息——密文C和解密后的M′。
  5. 确认解密值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,解密总能恢复原始消息。