RSA 算法介绍
RSA 算法系统主要包含三个子算法:Gen
, Enc
, Dec
,分别是密钥生成算法、加密算法以及解密算法。
密钥生成
密钥生成的过程如下:
- 选取大素数 $p,q$;
- 计算 $n=p\cdot q$,此处 $n$ 的位数就是 RSA 密钥的长度,比较稳妥的是2018位;
- 计算 $\phi(n)=(p-1) \cdot (q-1)$;
- 随机选取 $e$ 使得 $1\le e \le \phi(n)$,并且 $(e, \phi(n))=1$;
- 计算$d=e^{-1}\mod \phi(n)$;
- 因此,$(e, n)$ 即为 RSA 算法的公钥,$(d, n)$ 即为私钥。
加密
- 假设明文为 $m$;
- 计算密文 $c=m^e \mod n$。
解密
解密的过程很简单,为:
- 给定密文 $c$;
- 计算明文 $\hat{m}=c^d \mod n$
算法证明
算法的可行性证明过程如下:
当 $(m,n)=1$ 时,根据欧拉定理很容易知道是对的。如果 $m,n$ 不互质,不妨假设 $m=p\cdot x$,那么有:
再看对于 $q$ 的情况,首先有 $ed-1=h\cdot \phi(n) = h(p-1)(q-1)$
所以就有 $m^{ed} \equiv m \mod n$ 了,因此 RSA 在功能上是正确的。
算法案例
此部分代码在
1 | # @author S.L. |
运行结果为:
1 | the encrypted number is: 371257 |
本篇内容到这里就结束了,若想知道更多和信息安全有关的技术可在公众号留言。识别以下二维码可以成为本公众号的小粉丝,关注更多前沿技术。