RSA算法

RSA算法步骤
一、随机选择两个不相等的质数p和q。
二、计算p和q的乘积n。//n写成二进制既是密钥的长度
三、计算n的欧拉函数φ(n)
四、随机选择一个整数e,满足1< e < φ(n),且e与φ(n) 互质
五、计算e对于φ(n)的模反元素d **
六、将n和e封装成公钥,n和d封装成私钥

模反元素定义:有一个整数d,可以使得φ(n) mod (e*d) =1
欧拉函数定义:在数论中,对于正整数N,少于或等于N ([1,N]),且与N互质的正整数(包括1)的个数,记作φ(n)
欧拉公式 φ(n) = (p-1)*(q-1)***
例:给一个正整数n=10,小于10且与10互质的数有1,3,7,9,立即推→φ(n)=4

针对课上出的一个题,附上Python代码如下
在这里插入图片描述

import gmpy2
from Crypto.Util import number
p=301861363239887807384224177140591715807
q=315831234595666139083891245404044827641
e=65537
c=81863336247304443560424629413097253456392970574415344763122999669386681166515
n=p*q
t=(p-1)*(q-1)
d=gmpy2.invert(e,t)
m=pow(c,d,n)
print(number.long_to_bytes(m))

由于我用的python3.7中,没有自带gmpy2库和Crypto库,这里自行安装这两种库
1.Crypto
在cmd中运行

pip install pycryptodome

安装成功以后进入python/lib/site-packages
将crypto文件夹重命名为Crypto(首字母大写)
即可使用

2.gmpy2
首先要安装gmpy2的前提文件wheel

pip install wheel

安装完成后再安装gmpy2
gmpy2安装网址:https://www.lfd.uci.edu/~gohlke/pythonlibs/
#wheel 文件包需要和你所安装的 python3 版本一致
安装完成之后进入cmd安装gmpy2

pip install D:/gmpy2-2.0.8-cp37-cp37m-win_amd64.whl

安装完成之后即可正常使用
解出flag
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值