大家好,欢迎来到IT知识分享网。
概念
RSA算法是1977年由麻省理工学院的Ron Rivest,Adi Shamir和Leonard Adleman一起提出的非对称加密算法。
RSA设计思想:两个大素数相乘得数十分容易计算,但是对两个素数的乘积再进行因式分解却极其困难,因此可以将乘积公开作为加密密钥。
加密和解密过程
- 加密过程:
在密钥生成过程中,首先生成两个大的质数(素数)p和q,令
n=p*q;
m=(p-1)*(q-1);
选取较小的数e,使e和m互质,即e和m的最大公约数为1,然后生成d,使
d*emod m=1;
最后丢弃P,q,m,则公钥为e,n,私钥为d和n.
将明文x加密成密文y的计算公式为:
x=y^d mod n;
从公式可见,加密牵涉到明文和公钥。因此,密文即使被截获,也无法被解读出来。
- 解密过程:
将密文y解密成明文x的计算公式为:
x=y^d mod n;
从公式可见,解密只牵涉到私钥和密文。因此,只要保管好私钥,不泄密,就可以放心地把密文和公钥公开。
对称加密与非对称加密的技术原理
RSA实现流程
实际应用案例
- 私钥加密后公钥解密==>我传数据给客户使用【我私钥加密,客户公钥解密】
- 公钥加密后私钥解密)==>客户回传数据给我【客户公钥加密、我私钥解密】
RSA-Python实现脚本
import math # 求欧拉函数 def getEuler(pr1, pr2): return (pr1 – 1) * (pr2 – 1) #求私钥 def getDKey(e, Eulervalue): k = 1 while True: if (((Eulervalue * k) + 1) % e) == 0: (d, m) = divmod(Eulervalue * k + 1, e) return d #避免科学计数法最后转int失去精度 K += 1 #求明文 def Ming(c, d, n): return pow(c, d, n) if __name__==’__main__’: ”’ 依据p=1,q=,e=17 可以取私钥值 使用方法: 替换:p q e 的值 ”’ p = 1 q = d = getDKey(17, getEuler(p, q)) print(“d为:%d” % d) |
注:兑现承诺,尽量多的使用Python解决安全问题
版权说明:请尊重原创版权,版权归本人所有。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/69583.html