[TINY NSD] RSA 加...

物理
[TINY NSD] RSA 加密法

用户头像
IOIAKME 更新于2025-7-17 10:26:24

RSA 加密法与常见的加密法不同。

因为它是一种非对称加密法,即加密和解密的过程不同。

它的原理基于欧拉定理:若 $a,m$ 互质,则 $p^{\varphi\left(n\right)}\equiv1\pmod{n}$。


$\huge{\text{1:RSA 的加密/解密过程}}$

假设 Alice 想用 RSA 向 Bob 发送一条消息,应该怎么做呢?

$\LARGE{\text{1.1:密钥生成}}$

首先 Bob 需要生成一组密钥。

$\Large{\text{1.1.1:选择素数}}$

Bob 需要选择两个大质数 $p,q$,显然素数越大越好,但不能太大,只需要几千位就够了,否则接下来计算会比较慢。

$\Large{\text{1.1.2:计算模数}}$

模数 $n=pq$,直接把 $pq$ 相乘就可以了。

$\Large{\text{1.1.3:计算欧拉函数}}$

这时 $\varphi\left(n\right)=\left(p-1\right)\left(q-1\right)$,同样非常简单。

$\Large{\text{1.1.4:计算公钥}}$

你需要在 $1\sim\varphi\left(n\right)$ 中选择一个与 $\varphi\left(n\right)$ 互质的整数 $e$。

为了计算更快,$e$ 应该为较小的,二进制表示中含较少 $1$ 的质数,例如 $3,5,17,257,65537$ 等。

$\Large{\text{1.1.5:计算私钥}}$

计算 $d=e^{-1}$,即找到使 $de\equiv1\pmod{\varphi\left(n\right)}$ 成立的最小正整数 $d$。

$\Large{\text{1.1.6:发送公钥}}$

这时,Bob 得到了公钥 $\left(n,e\right)$ 和私钥 $\left(n,d\right)$。Bob 需要妥善的保存私钥,然后把公钥发送给 Alice。注意,即使别人知道了公钥没事,但别人知道私钥就有事了。

$\LARGE{\text{1.2:加密}}$

当 Alice 接收到 Bob 发送的公钥之后,就可以开始加密数据了。

$\Large{\text{1.2.1:准备明文}}$

你需要把想发送的信息转换为一个整数。

设这个整数为 $M$。

$\Large{\text{1.2.2:计算密文}}$

Alice 知道公钥 $\left(n,e\right)$,所以可以计算密文 $C=M^e\bmod n$。然后把密文 $C$ 发送给 Bob。

$\LARGE{\text{1.3:解密}}$

当 Bob 接收到 Alice 发送的密钥 $C$ 后,就可以开始解密数据了。

$\Large{\text{1.3.1:计算明文}}$

Bob 利用自己保存的公钥 $\left(n,d\right)$,计算明文 $M=C^d\bmod n$。

$\Large{\text{1.3.2:恢复原文}}$

按照约定的方式,把整数 $M$ 转换为原文。

于是一次加密和解密就完成了。

$\huge{\text{2:RSA 的加密/解密过程的优点}}$

假设我不是 Bob,但我想要知道 Alice 发送了什么内容,应该怎么做?

$\LARGE{\text{2.1:获取密文和公钥}}$

我们可以轻易的获得 $n,e,C$ 三个数,因为它们都曾在网络中传输。但由于 HTTPS 协议的出现,这个步骤变难了。

$\LARGE{\text{2.2:计算私钥}}$

现在只需要知道私钥就能获得密文。

私钥 $d$ 是在模 $\varphi\left(n\right)$ 意义下 $e$ 的逆。所以我们只需要知道 $\varphi\left(n\right)$ 的值,就可以求出 $d$,从而解密信息。

$\LARGE{\text{2.3:计算两个质数}}$

可以得到 $\varphi\left(n\right)=pq-p-q+1=n-p-q+1$。不幸的是,我们只能通过分解 $pq$ 来获得 $p+q$。但此时面对几千位的 $pq$,没有合适的(适用于普通计算机的)算法算出 $p$ 和 $q$(在量子计算机普及之前)。

所以我们得到,通过 RSA 加密的数据不会被别人看到。

但要是有人修改数据呢?

$\huge{\text{3:RSA 的数字签名/验证过程}}$

$\huge{\text{4:RSA 的数字签名/验证过程的优点}}$

$\huge{\text{5:RSA 中需要的算法}}$

收起
9
13
共3条回复
时间正序
用户头像
欣雨
12小时前
好祥细
用户头像
一个无机碳
12小时前
这个只能通过算机实现吧
用户头像
Silicon(硅)『对酒当歌』
11小时前
点个赞支持一下