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 |
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术