抱歉,您的浏览器无法访问本站
本页面需要浏览器支持(启用)JavaScript
了解详情 >

RSA的基本介绍

python pow函数的用法:计算x的y次方,如果z在存在,则再对结果进行取模,其结果等效于pow(x,y) %z

1
2
3
import math

math.pow(x, y[, z])

求明文m,用该函数求c(密文cipher)的d次方,得到:

$$d\equiv e^{-1}$$

$$m=pow(cipher,e^{-1})$$

d是e的乘法逆元 ,e^-1 是乘法逆元,并不是-1次方的意思

利用gmpy2库,来求出明文m

gmpy2这里主要是用于它的开方功能。即:c去开e次方(e=65537)

1
2
3
4
5
6
import gmpy2
from Crypto.Util.number import *

data = open('rsa_16m', 'r').read().split('\n')
m = gmpy2.iroot(int(data[1][4:], 16), int(data[2][4:], 16))[0]
print(long_to_bytes(m))

#注意python环境配置

pip3 install gmpy2

pip3 install Crypto

tips: 一些技巧

exp() 方法返回x的指数,ex。

以下是 exp() 方法的语法:

1
2
3
import math

math.exp( x )

log() 返回 x 的自然对数。

以下是 log() 方法的语法:

1
2
3
import math

math.log(x[, base])

注意:log()是不能直接访问的,需要导入 math 模块,通过静态对象调用该方法。

参数

  • x – 数值表达式。
  • base – 可选,底数,默认为 e。

$$ed\equiv 1 mod \varphi(n)$$

$$m^e mod n \equiv c$$

评论