1.题目

RSA已知e1,e2,c1,c2

2.知识

共模攻击使用相同N作为加密的模数,如果监听者获知了c1,c2的密文,那么监听者便不需要d1,d2即可解出明文m

3.解题

按照思路编写代码解题

点击查看代码
from gmpy2 import invert
import binascii def gongmo(n, c1, c2, e1, e2):
#欧几里得辗转相除
def egcd(a, b):
if b == 0:
return a, 0
else:
x, y = egcd(b, a % b)
return y, x - (a // b) * y s = egcd(e1, e2)
s1 = s[0]
s2 = s[1] # 求模反元素
if s1 < 0:
s1 = - s1
c1 = invert(c1, n) #因为负数指数在求模运算中需要转化为其正等效值
elif s2 < 0:
s2 = - s2
c2 = invert(c2, n)
m = pow(c1, s1, n) * pow(c2, s2, n) % n
return m c1 = 22322035275663237041646893770451933509324701913484303338076210603542612758956262869640822486470121149424485571361007421293675516338822195280313794991136048140918842471219840263536338886250492682739436410013436651161720725855484866690084788721349555662019879081501113222996123305533009325964377798892703161521852805956811219563883312896330156298621674684353919547558127920925706842808914762199011054955816534977675267395009575347820387073483928425066536361482774892370969520740304287456555508933372782327506569010772537497541764311429052216291198932092617792645253901478910801592878203564861118912045464959832566051361
n = 22708078815885011462462049064339185898712439277226831073457888403129378547350292420267016551819052430779004755846649044001024141485283286483130702616057274698473611149508798869706347501931583117632710700787228016480127677393649929530416598686027354216422565934459015161927613607902831542857977859612596282353679327773303727004407262197231586324599181983572622404590354084541788062262164510140605868122410388090174420147752408554129789760902300898046273909007852818474030770699647647363015102118956737673941354217692696044969695308506436573142565573487583507037356944848039864382339216266670673567488871508925311154801
e1 = 11187289
c2 = 18702010045187015556548691642394982835669262147230212731309938675226458555210425972429418449273410535387985931036711854265623905066805665751803269106880746769003478900791099590239513925449748814075904017471585572848473556490565450062664706449128415834787961947266259789785962922238701134079720414228414066193071495304612341052987455615930023536823801499269773357186087452747500840640419365011554421183037505653461286732740983702740822671148045619497667184586123657285604061875653909567822328914065337797733444640351518775487649819978262363617265797982843179630888729407238496650987720428708217115257989007867331698397
e2 = 9647291
result = gongmo(n, c1, c2, e1, e2)
print(result) print(binascii.unhexlify(hex(result)[2:].strip("L")))#strip("L") 的作用是移除字符串中的字符 ‘L’。在某些旧版本的 Python 中,当使用 hex() 函数将一个整数转换为十六进制字符串时,可能会在字符串的末尾添加一个 ‘L’ 来表示长整数。
# 13040004482819947212936436796507286940525898188874967465457845309271472287032383337801279101
# b'flag{49d91077a1abcb14f1a9d546c80be9ef}'

代码中使用欧几里得辗转相除法

BUUCTF---RSA3(共模攻击)的更多相关文章

  1. [CTF] RSA共模攻击

    from gmpy2 import * import libnum n = 0x00b0bee5e3e9e5a7e8d00b493355c618fc8c7d7d03b82e409951c182f398 ...

  2. RSA进阶之共模攻击

    适用场景: 同一个n,对相同的m进行了加密,e取值不一样. e1和e2互质,gcd(e1,e2)=1 如果满足上述条件,那么就可以在不分解n的情况下求解m 原理 复杂的东西简单说: 如果gcd(e1, ...

  3. RSA共模攻击

    在安恒月赛中碰到一道密码学方向的ctf题 附上源码 from flag import flag from Crypto.Util.number import * p=getPrime(1024) q= ...

  4. $\mathcal{Crypto}$ 共模攻击原理实现以及$\mathcal{CRT}$优化

    \(\mathcal{共模攻击概述}\) 共模攻击是一种攻击 \(\mathcal{RSA}\) 加密的技术,当两个密文使用相同的 \(\mathcal{RSA}\) 公共模数时,攻击者可以使用中国剩 ...

  5. RSA的共模攻击

    实验吧题目:http://www.shiyanbar.com/ctf/1834 参考:http://hebin.me/2017/09/07/%e8%a5%bf%e6%99%aectf-strength ...

  6. BUUCTF平台:RSA

    RSA import gmpy2 def Decrypt(c,e,p,q): L=(p-1)*(q-1) d=gmpy2.invert(e,L) n=p*q m=gmpy2.powmod(c,d,n) ...

  7. 简单RSA攻击方式

    RSA攻击方式总结 1.模数分解 1).解题思路 ​ a).找到RSA算法中的公钥(e,n) ​ b).通过n来找到对应的p和q,然后求得φ(n) ​ c).通过gmpy2.invert或者gmpy2 ...

  8. Given d and e, factorize N to attack RSA

    题目如下: RSA算法的使用一般要求每个不同的用户有一个独立的模数N.有天,Bob脑洞大开,认为似乎没有必要这样做.只需要一个模数N,然后给不同的用户分发不同的e和d就好了.可惜这种做法有严重的安全漏 ...

  9. BUUCTF-writeup

    Reverse RSA 使用openssl模块 rsa -pubin -text -modulus -in pub.key得到n值,在 factordb.com上分解大素数得到p,q值,脚本生成pri ...

  10. v0lt CTF安全工具包

    0×00 v0lt v0lt是一个我尝试重组每一个我使用过的/现在在使用的/将来要用的用python开发的安全领域CTF工具.实践任务可能会采用bash脚本来解决,但我认为Python更具有灵活性,这 ...

随机推荐

  1. 跟着源码学IM(十):基于Netty,搭建高性能IM集群(含技术思路+源码)

    本文原题"搭建高性能的IM系统",作者"刘莅",内容有修订和改动.为了尊重原创,如需转载,请联系作者获得授权. 1.引言 相信很多朋友对微信.QQ等聊天软件的实 ...

  2. 在 Vercel 部署随机图 API

    在本文中,将详细介绍如何在 Vercel 平台上部署一个具有分类功能的随机图片 API.通过这个 API,用户可以根据不同的分类获取随机图片链接,并且还可以从所有分类中随机获取一张图片. 项目结构 首 ...

  3. K_V键值存储对比

    memcached-键值存储 redis-键值存储 RocksDB-键值存储 KeyDB-键值存储 DynamoDB-键值存储 levelDB-键值存储 etcd-键值存储 Redis与其他数据库对比 ...

  4. biancheng-JSTL标签库

    JSP 标签是一组与 HTML 标签相似,但又比 HTML 标签强大的功能标签.JSTL 用来简化 JSP 开发,可以使我们不用嵌入 Java 代码就能够开发出复杂的 JSP 页面.JSTL 包含 5 ...

  5. ARM单片机知识点

    1.STM32编译信息 代码占用FLASH 大小为:Code + RO-data, 7420字节(5054+2366),所用的RAM 大小为:RW-data + ZI-data, 8576(372+8 ...

  6. 个人数据保全计划:部署joplin server笔记同步服务

    前言 在这个数据爆炸的时代,个人数据的价值愈发凸显,成为我们生活与工作中无可替代的重要资产.上一篇文章里,我介绍了从印象笔记迁移至 Joplin 的过程,这是我寻求数据自主掌控的关键一步.在探索同步方 ...

  7. WAIC 2024,好city啊!

    7月4日,"以共商促共享•以善治促善智"为主题的2024世界人工智能大会暨人工智能全球治理高/级别会议(简称"WAIC 2024")在上海举办.天翼云携智算创新 ...

  8. 一键部署Palworld幻兽帕鲁服务器最佳实践

    本文基于天翼云通用型云主机,为您介绍通过镜像一键部署Palworld幻兽帕鲁服务器的具体操作. Ubuntu系统 1.按需购买云主机.通过Palworld专属活动优惠页一键购买开通云主机. 根据需要选 ...

  9. 喜讯!天翼云斩获NLP国际顶会比赛两项荣誉

    近日,NLP国际顶会ACL(The Association for Computational Linguistics)进行的国际赛事WASSA 2023(13th Workshop on Compu ...

  10. Zabbix Server 5.0 安装及Zabbix5.2 一键部署脚本

    zabbix 5.0 安装部署 1.关闭防火墙和selinux,安装repository源 [1]关闭防火墙,SELINUX firewall-cmd --state #查看默认防火墙状态,关闭后显示 ...