#题目来源于(CTFshow*)
crypto4
p=447685307 q=2037 e=17
(p、q公因数) (e为质数)
#写python脚本
import gmpy2 python版本需与gmpy2库的版本相同即兼容
n = p * q
#phi_n=φ(n) #python脚本选择使用phi_n
(下横线→alt+9、5键)
φ(n)= (p-1)*(q-1)
d = gmpy2. invert(e,φ(n))
print(d)
crypto5
p=447685307 q=2037 e=17 c=704796792
(与上题不相同的条件为已知c,且求m)
#C为明文,M为密文。
在原有脚本上更新
import gmpy2
n = p * q
φ(n)= (p-1)*(q-1)
d = gmpy2. invert(e,φ(n))
m = pow(c,d,n)
print(m)
#pow函数(补充)
正常情况下 pow函数的基础形式pow(x,y,z)
>>> pow(4,0.5)
2.0
>>> pow(3,2)
9
省略z值时,则pow函数返回x值的y次方的值.
>>> pow(9,2,8)
1
>>> pow(8,2,5)
4
z值存在时,pow函数返回值则是等于pow(x,y)的结果对z求余数.
###
(1)z值省略时,x值和y值可以是整数和浮点数.
>>>a = pow(8,-0.5)
0.3535533905932738
>>> type(a)
<class'float'>
>>>b = pow(8,2)
64
>>> type(b)
<class'int'>
(2)z值不可为0.
>>> pow(4, 2, 0)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: pow() 3rd argument cannot be 0
(3)当z值存在时,x值和y值只能为整数.
>>> pow(3, 0.7, 1)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: pow() 3rd argument not allowed unless all arguments are integers
RSA解密在线工具:
工具提取:
链接:https://pan.baidu.com/s/1q-gWmYemSjI9bUhV8YI2KA?pwd=2333
提取码:2333