python实现RSA加密详细

python实现RSA加密详细,第1张

概述一、原理采用数学函数来进行变换,密文产生的结果远比普通代换多,用公钥进行加密,私钥进行解密。二、基本步骤选取素数p、qMiller-Rabin素性检验计算n=p*qφ(n)=(p-1)(q-1)选择整数e(公钥)满足1<e<φ(n)(有乘法逆元)且e与φ(n)互素(有唯一乘法逆元)计算 一、原理

采用数学函数来进行变换,密文产生的结果远比普通代换多,用公钥进行加密,私钥进行解密。

二、基本步骤@H_502_11@

选取素数p、q

Miller-Rabin素性检验

@H_502_11@

计算 n = p * q φ(n) =(p-1)(q-1)

@H_502_11@

选择整数e (公钥) 满足1<e< φ(n)(有乘法逆元) 且e与 φ(n) 互素(有唯一乘法逆元)

@H_502_11@

计算 d*e mod q =1 的d 由于计算机表达整数的长度有限,需要用快速幂算法计算

扩展欧几里得求逆元

@H_502_11@

以{e,n}为公钥 {d,n}为密钥

@H_502_11@

加密解密

加密

1.将明文比特串分组,使得每个分组对应的十进制数小于n(因为十进制数modn的结果,肯定小于n)
2.对明文分组m,作加密运算: c === m^(e) mod npow(m,e,n)

解密

对密文分组的解密运算为: m ===c^(d) mod n
三、安全性分析

RSA的安全性基于 n难以分解成 p * q,那么就计算不了 φ(n),因此密钥 d 的保密性高

对p、q、n、e选取的要求

@H_502_11@| p -q |要大 否则 p + q 2 \frac{p+q}{2} 2p+q​仅仅稍大于 n 1 2 n^\frac{1}{2} n21​,顺序检查大于n的整数x,直到 x 2 − n x^2-n x2−n是某一整数的平方 即 x 2 − n = y 2 x^2-n=y^2 x2−n=y2
 n = (x+y)(x-y)
@H_502_11@

p-1和q-1都应有大素因子、n要小 防止低指数攻击

@H_502_11@

模数n不要选取一样的 防止共模攻击

最后,消息的发送方是怎样获得接收方的公钥的呢

公钥分配

总结

以上是内存溢出为你收集整理的python实现RSA加密详细全部内容,希望文章能够帮你解决python实现RSA加密详细所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1185167.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-03
下一篇 2022-06-03

发表评论

登录后才能评论

评论列表(0条)

保存