RSA算法学习

发布时间 2023-12-29 21:00:31作者: 张伟文

RSA算法学习

介绍:

RSA 加密算法是一种非对称加密算法。在公开密钥加密和电子商业中 RSA 被广泛使用。RSA 是 1977 年由罗纳德 · 李维斯特(Ron Rivest)、阿迪 · 萨莫尔(Adi Shamir)和伦纳德 · 阿德曼(Leonard Adleman)一起提出的。RSA 就是他们三人姓氏开头字母拼在一起组成的。

RSA 算法的可靠性由极大整数因数分解的难度决定。换言之,对一极大整数做因数分解愈困难,RSA 算法愈可靠。假如有人找到一种快速因数分解的算法的话,那么用 RSA 加密的信息的可靠性就肯定会极度下降。但找到这样的算法的可能性是非常小的。如今,只有短的 RSA 密钥才可能被强力方式解破。到 2017 年为止,还没有任何可靠的攻击 RSA 算法的方式。

基本原理:

公钥与私钥的产生:

1.随机选择两个不同大质数 p 和 q,计算 N=p×q

2.根据欧拉函数,求得 φ(N)=φ(p)φ(q)=(p−1)(q−1)

3.选择一个小于 φ(N) 的整数 e,使 e 和 φ(N) 互质。并求得 e 关于 φ(N) 的模反元素,命名为 d,有 ed ≡ 1(modφ(N))

4.将 p 和 q 的记录销毁

此时,(N,e) 是公钥,(N,d) 是私钥。

消息加密:

首先需要将消息 以一个双方约定好的格式转化为一个小于 N,且与 N 互质的整数 m。如果消息太长,可以将消息分为几段,这也就是我们所说的块加密,后对于每一部分利用如下公式加密:
$$
m^e≡c(modN)
$$

消息解密:

利用密钥 d 进行解密。
$$
c^d≡m(modN)
$$