RSA密码解密(学习记录)【含python.pow函数原理应用】

#题目来源于(CTFshow*)

ctf.show

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)

>>>b = pow(8,2)
64
>>> type(b)


(2)z值不可为0.

>>> pow(4, 2, 0)
Traceback (most recent call last):
  File "", line 1, in 
ValueError: pow() 3rd argument cannot be 0

(3)当z值存在时,x值和y值只能为整数.

>>> pow(3, 0.7, 1)
Traceback (most recent call last):
  File "", line 1, in 
TypeError: pow() 3rd argument not allowed unless all arguments are integers

RSA解密在线工具:

工具提取:

链接:https://pan.baidu.com/s/1q-gWmYemSjI9bUhV8YI2KA?pwd=2333 
提取码:2333

你可能感兴趣的:(学习)