BUUCTF-逆向-rsa

rsa

1.先了解rsa加密是什么rsa

2.打开pub_key(就是公钥),用在线网站可以得到n和e

1

3.再用在线网站,得到p和q。

首先给出的n(C0332C5C64AE47182F6C1C876D42336910545A58F7EEFEFC0BCAAF5AF341CCDD)是16进制,换成十进制

2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import gmpy2
import rsa

# 已知的RSA参数
e = 65537
n = 86934482296048119190666062003494800588905656017203025617216654058378322103517
p = 285960468890451637935629440372639283459
q = 304008741604601924494328155975272418463

# 计算φ(n)
phi_n = (p - 1) * (q - 1)

# 计算私钥d
d = int(gmpy2.invert(e, phi_n))

# 使用p, q, e, d生成私钥对象
private_key = rsa.PrivateKey(n, e, d, p, q)

try:
# 加载密文
with open('D:\\桌面\\41c4e672-98c5-43e5-adf4-49d75db307e4\\output\\flag.txt', "rb") as file:
ciphertext = file.read()

# 尝试解密
decrypted_message = rsa.decrypt(ciphertext, private_key)
print("解密后的消息: ", decrypted_message.decode())

except rsa.DecryptionError as de:
print("解密失败: 解密错误 - ", str(de))
except Exception as e:
print("解密失败: 其他错误 - ", str(e))

解得flag

1
flag{decrypt_256}