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加密算法测试

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
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

  

posted @   休耕  阅读(625)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
点击右上角即可分享
微信分享提示