当前位置: 首页 > news >正文

picoCTF密码学writeup——EVEN RSA CAN BE BROKEN???

【题目】——This service provides you an encrypted flag. Can you decrypt it with just N & e?

【解题】远程运行服务器后得到N,e和cyphertext的值,以及RSA加密过程的python代码,如下:

def gen_key(k):"""Generates RSA key with k bits"""p,q = get_primes(k//2)N = p*qd = inverse(e, (p-1)*(q-1))return ((N,e), d)def encrypt(pubkey, m):N,e = pubkeyreturn pow(bytes_to_long(m.encode('utf-8')), e, N)def main(flag):pubkey, _privkey = gen_key(1024)encrypted = encrypt(pubkey, flag) return (pubkey[0], encrypted)if __name__ == "__main__":flag = open('flag.txt', 'r').read()flag = flag.strip()N, cypher  = main(flag)print("N:", N)print("e:", e)print("cyphertext:", cypher)exit()

 关于RSA的数学逻辑可以参考这篇文章,根据公式M=Cd mod n解密得到明文M(其中C是密文,e * d ≡ 1 mod Φ(n),Φ(n)=(p-1)*(q-1),p和q是两个质数)

现在已知C,e的值,得到p和q即可反推d的值,最终解密得到明文M,

而RSA算法保障密码不可破解的关节点就是“大数分解难题”,也就是将N分解成两个质数p和q,

所以破解的入手点就是p和q的值并非大质数,而是存在一定漏洞或规律,

因此我们多次运行上述代码,得到多组N和cyphertext数值对,

通过观察发现,所有的N值都是偶数,

因此我们选择一组数值对N和cyphertext,令p=2(当然q=2也可以),那么q=N/2,

Φ(n)=(p-1)*(q-1) 即可得,

d = inverse(e, Φ(n)) 即可得,
明文 M = pow(C, d, N) 即可得。
详细代码如下:
from Crypto.Util.number import inverse, long_to_bytes
# 给定参数(示例:第1组数值对)
C = 9109970059048183683019519086451323279844163956674438551666137208759174857870459426568972012648753854223216577134638714421248398487373332600794532623165627
N=15802304864428476390598424929570263603743509364707965536076049112745011278235752576010382135022029835275435449162451633173608468168435767399816829899840406
e = 65537q = 2
p = N // q  # 计算 φ(N)
phi = (p - 1) * (q - 1)# 计算私钥 d
d = inverse(e, phi)# 解密
M = pow(C, d, N)# 转成字节 / 字符串
print("M (int) =", M)
print("M (bytes) =", long_to_bytes(M))

OVER

http://www.jsqmd.com/news/185218/

相关文章:

  • Qwen3-VL短视频创作:从脚本描述生成分镜草图
  • Qwen3-VL亲子鉴定引导:采样过程图像步骤提示
  • 单片机控制LED入门:完整示例教学
  • macOS菜单栏革命:用Ice实现极致工作空间管理
  • 2025年Mac菜单栏革命性优化方案:Ice应用深度体验指南
  • Qwen3-VL移民材料整理:多国证件格式标准化转换
  • STM32 I2C通信协议在Keil MDK中的实现详解
  • 2026年质量好的阻尼上翻门厂家最新推荐排行榜 - 行业平台推荐
  • Qwen3-VL学术不端检测:图表伪造识别与数据一致性验证
  • Source Sans 3 字体库:从入门到精通的完整实践手册
  • yt-dlp-gui终极指南:从零开始掌握专业视频下载工具
  • 终极IPTV播放器容器化部署完整指南:一键配置与性能调优方案
  • ExplorerPatcher完全配置指南:5个步骤让Windows 11变回熟悉的操作界面
  • MHY_Scanner:米哈游游戏智能扫码登录完整解决方案
  • VisualCppRedist AIO:告别Windows软件运行困境的智能解决方案
  • L298N与STM32协同控制智能小车转向:系统学习篇
  • 企业微信定位修改工具:智能化位置管理技术解析与实战指南
  • 英雄联盟工具集Akari的完整配置与使用指南
  • 英雄联盟智能助手技术深度解析:LCU API驱动的游戏体验革命
  • 基于Qwen3-VL的视觉代理技术详解:实现PC与移动GUI自动操作
  • 工业控制软件调试中Keil5中文显示异常一文说清
  • JLink驱动安装实战演示:配合J-Flash进行固件烧录
  • FramePack视频帧优化:让AI视频生成更高效更智能
  • Qwen3-VL支持1M上下文扩展:轻松处理数小时视频与整本电子书
  • 终极解决方案:Windows系统彻底卸载Microsoft Edge浏览器完整指南
  • Qwen3-VL遗产分配建议:资产图像估值与法律条款匹配
  • Python Android开发完整教程:免Java快速构建移动应用终极指南
  • FramePack视频帧优化工具完全指南:从零开始快速部署AI视频生成系统
  • VisualCppRedist AIO:终结Windows应用依赖困扰的终极方案
  • 如何快速配置企业微信打卡助手:新手3分钟终极指南