CTF-RSA_共模攻击原理及脚本

本文介绍了CTF竞赛中RSA的共模攻击原理,这种攻击利用了相同模数n的不同公钥进行加密的特性。通过讲解出题脚本和解密过程,详细阐述了如何在不需知d的情况下,利用e1和e2的互质关系进行解密。同时,文中给出了相关解密脚本和数学推导,帮助理解这一攻击方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

CTF-RSA_共模攻击原理及脚本

共模攻击,也称同模攻击。

同模攻击利用的大前提就是,RSA体系在生成密钥的过程中使用了相同的模数n。

在CTF题目中,就是 同一明文,同一n,不同e,进行加密。

m,n相同;e,c不同,且e1 和 e2互质

出题脚本

随机生成flag
import random
import hashlib
import string

#字符串列表
a=string.printable
#随机生成flag
for i in range(10):
    flag = ""
    for i in range(10):
        flag += a[random.randint(0, 99)]
    flag = hashlib.md5(flag.encode()).hexdigest()
    print("flag{" + flag + "}")

题目1
#coding:utf-8
import libnum
import gmpy2
#生成素数
p=libnum.generate_prime(1024)
q=libnum.generate_prime(1024)
e1=2333
e2=23333
m="flag{6ed4c74e022cb18c8039e96de93aa9ce}"
m=libnum.s2n(m)
n=p*q
#pow(x, y[, z])
#函数是计算 x 的 y 次方,如果 z 在存在,则再对结果进行取模
c1=pow(m,e1,n)
c2=pow(m,e2,n)
print("n1:",n)
print("e1:",e1)
print("c1:",c1)
print("n2:",n)
print("e2:",e2)
print("c2:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值