题目信息

题目给出了RSA加密的核心参数:

参数
p 262248800182277040650192055439906580479
q 262854994239322828547925595487519915551
e 65533
c 27565231154623519221597938803435789010285480123476977081867877272451638645710

目标:解密密文c,得到原始flag


题目分析

RSA加密原理回顾

RSA是一种非对称加密算法,核心公式:

加密:c = m^e mod n
解密:m = c^d mod n

其中:

  • n = p * q(模数)
  • φ(n) = (p-1) * (q-1)(欧拉函数)
  • d = e^(-1) mod φ(n)(私钥,e的模逆元)

本题关键点

  1. p和q已直接给出 - 不需要进行大数分解
  2. e是标准值 - 65533接近常见的65537
  3. Python 3.8+特性 - 可使用pow(e, -1, phi)计算模逆元

解题脚本

from Crypto.Util.number import long_to_bytes

# ========== 题目给定的参数 ==========
p = 262248800182277040650192055439906580479
q = 262854994239322828547925595487519915551
e = 65533
c = 27565231154623519221597938803435789010285480123476977081867877272451638645710

# ========== 计算步骤 ==========

# 1. 计算模数 n
n = p * q
print(f"n = {n}")

# 2. 计算欧拉函数 φ(n)
phi = (p - 1) * (q - 1)
print(f"phi = {phi}")

# 3. 计算私钥 d (e的模逆元)
d = pow(e, -1, phi)
print(f"d = {d}")

# 4. 解密得到明文 m
m = pow(c, d, n)
print(f"m = {m}")

# 5. 转换为字节字符串
flag = long_to_bytes(m)
print(f"Flag: {flag.decode()}")

 运行结果

flag{B4by_Rs4}

🛠️ 环境配置

依赖安装

# 安装 pycryptodome
pip install pycryptodome

# 或使用 pycrypto (旧版)
pip install pycrypto

Python版本要求

# 检查Python版本 (需要3.8+)
python3 --version

# 如果版本过低,使用gmpy2替代
pip install gmpy2

gmpy2版本脚本

import gmpy2
from Crypto.Util.number import long_to_bytes

d = gmpy2.invert(e, phi)  # 替代 pow(e, -1, phi)

知识点总结

概念 说明
RSA 非对称加密,公钥加密私钥解密
模逆元 a * a^(-1) ≡ 1 (mod n)
欧拉函数 φ(n) = (p-1)(q-1) (n=p*q)
long_to_bytes 将大整数转换为字节串

 

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐