Do u know RSA?
First Post:
Last Update:
Word Count:
Read Time:
Last Update:
Word Count:
731
Read Time:
2 min
RSA概述
RSA
是一种非对称加密算法,在公开密钥加密和电子商业中RSA被广泛使用。公钥(Public Key
)与私钥(Private Key
)是通过一种算法得到的一个密钥对(即一个公钥和一个私钥),公钥是密钥对中公开的部分,私钥则是非公开的部分。公钥通常用于加密会话密钥、验证数字签名,或加密可以用相应的私钥解密的数据。
预备知识
模运算 mod
在正整数范围内选取a
,b
,分别对另一个正整数n
进行取余运算,得到a
与b
关于n
同余,记作
模逆运算
如果正整数a
,b
,n
满足a
与b
互为模n
的逆元,记作
python
实现:
1 |
|
其余模运算基本原理可以参照这篇文章:https://blog.sengxian.com/algorithms/mod-world
欧拉函数 phi
n
的正整数之中,有多少个数与n
构成互质关系。
1.若1
与任何数都构成互质关系
2.若
3.若p
为质数,则
4.若
欧拉定理
若两个正整数a
和n
互质,则n
的欧拉函数
How to ENCRYPT?
1.首先,我们选取两个不相同的大素数p
和q
,并计算
2.计算
3.选取一个小于e
4.计算e
在模n
下的逆元d
,即
5.(n, e)
封装为公钥,(p, q, d)
封装为私钥
6.将密文转码为十六进制数据m
7.c
即为可以传输的密文
至此RSA
加密完成
How to DECRYPT?
最简单的情况:已知p
,q
,e
,c
1.计算
2.计算逆元
3.
即可得到明文
解密算法证明
分两种情况证明,
m与n互质
m与n不互质
由于m
与n
不互质,所以m
与n
必定有一个大于1
的公因子,而由于p
与q
均为质数,所以
由于
即
假设
由此可以得到
至此证明完毕
reward
Alipay
Wechat