buu-re-21

Article Directory

RSA的经典算法,还是记一下吧。。。

这是RSA的具体细节

打开是这些文件
1

无疑是个rsa解密,key里的内容如下

1
2
3
4
-----BEGIN PUBLIC KEY-----
MDwwDQYJKoZIhvcNAQEBBQADKwAwKAIhAMAzLFxkrkcYL2wch21CM2kQVFpY9+7+
/AvKr1rzQczdAgMBAAE=
-----END PUBLIC KEY-----

这是个公钥,全部复制到这个网站可以得到NE

N = “模数”

E = “指数”

然后由N = p*q 算出pq;用yafu工具,指令是factor(N)
2

然后算密钥D(用python gmpy2模块)

D = gmpy2.invert(e,(p-1)*(q-1))

最后算出key

key = rsa.PrivateKey(n,e,int(d),p,q),这里int(d)是必不可少的,不然会报错

完整脚本:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
import gmpy2
import rsa

n = 86934482296048119190666062003494800588905656017203025617216654058378322103517
e = 65537
p = 285960468890451637935629440372639283459
q = 304008741604601924494328155975272418463
d = gmpy2.invert(e,(q-1)*(p-1))

key = rsa.PrivateKey(n,e,int(d),p,q)

f = open("flag.enc","rb")
text = f.read()
print(rsa.decrypt(text,key))
f.close()

#flag{decrypt_256}

Comments