RSA加密算法
一、密码与加密
传统密码:加密算法是秘密的
现代密码系统:加密算法是公开的,密钥是秘密的
-
- 对称加密,加密解密都是一个密钥
- 非对称加密,加密解密是不同的密钥
二、RSA加密算法
1、RSA非对称加密系统
公钥:用来加密,是公开的
私钥:用来解密,是私有的
2、RSA加密算法过程
- 随机选取两个质数p和q
- 计算n=pq
- 选取一个与φ (n)互质的小奇数e,φ (n)=(p-1)(q-1)
- 对模φ (n),计算e的乘法逆元d,即满足(e*d) mod φ (n) = 1
- 公钥(e, n) 私钥(d, n)
加密过程:c = (m^e) mod n
解密过程:m = (c^d) mod n
3、RSA加密算法测试
In[1]:p = 53 In[2]:q = 59 In[3]:n = p * q In[4]:fai = (p-1)*(q-1) # 欧拉函数 In[5]:e = 3 # 与fai互质的小奇数 In[6]:d = 2011 # 求得逆元d,满足(e*d)mod fai = 1 In[7]:(e*d) % fai Out[9]: 1 In[10]:print(e,n) # 这两个组成公钥 3 3127 In[11]:print(d,n) # 这两个组成私钥 2011 3127 In[12]:m = 87 # 定义要传输的明文 In[13]:c = (m**e) % n # 加密得到密文 In[14]:c Out[14]: 1833 In[15]:(c**d) % n # 解密得到明文 Out[15]: 87