随便做做crypto---wp

本文详细解析了两个Crypto挑战的解题思路与过程。首先介绍了如何通过开方和方程组解决crypto3中的RSA加密问题,接着展示了如何逆向生成e1值并运用共模攻击来破解crypto4。附带完整的Python解题代码。

crypto3

题目
import libnum
import sympy
from Crypto.Util.number import *

hb = 'flag{******}'
key = 'lalala'
strr = int(len(hb) / 2)
hb1 = hb[:strr]
hb2 = hb[strr:]
numhb = getPrime(1024) * libnum.s2n(key)
p = sympy.nextprime(numhb)
q = sympy.nextprime(p)
N = p * q
e = 0x10001
X1 = libnum.s2n(hb1)
X2 = libnum.s2n(hb2)
Y1 = X1 + X2
Y2 = pow(X1, 3) + pow(X2, 3)
m1 = pow(Y1, e, N)
m2 = pow(Y2, e, N)
print(str(N))
print(str(m1))
print(str(m2))

# N=169571714276836750768696835008286797130964560422135983632253460993844035070277271992940820745023753945894502976570008200589227013451254780779721268856064051799757956338533517600254186053716792892722735738924990872043856059071005689245420166459070018206523542210950116342161822850237993101505160818628595991502441957067340348806649724662522892332480243279436888202057735982434756342193071150485301462887812976898235230327266061793213127098569370855345779167670721322068425019594539396035695141165203949438822818707800302694750619436848158501146001272249288440359876315789666553512511334802790123284335714644770001763786101749041692403224266378333
# m1=137172276639648887866557875830283309268893058083402908605493428856931096246187056556856467774180211381223871133607767655336431349621874557506065545371474065840072026317886134443311087628235313414310040904327417341374591890476935829706967293090047575836949411891533957262211584538513973095674259149874069839572980565963185135218532015632775320049705004780825401043351437275761168698343756180608793172308795450259671671126163498209248726075329062986372656262335822210535681935882187351049078989043430971982943253054626620489690242020364833122097528269983272067077892250086096922160648275675860338120822069436693644821559962215200528625442048903486
# m2=85600331898169838702390350356428627676930745956406210582645430675260910062349006731528704102512561673331068948748510606713038245214294987447829875453022328315398197906113790659337256909918983375112298910555431769732760886290698793196809041462016219417622456176539301079538878853012896990413165489142039700369298843291500575220073632525301870447773813204843605644953473011827605983785439793140776467915226524477686019127682934182174874779811395295673168383049917465131906568138545253206085372839780162957083500051701697689589520178100058660524276265753437347330401197091143962953867565321953109860311053126708424330474158880008982673477031520209


过程分析

根据p q相近,直接开方往前推得到p,进而得到q。接下来简单RSA解密解出Y1Y2,然后构造方程组flag1+flag2-Y1flag1**3+flag2**3-Y2,最好解方程得到flag1flag2

解题代码
from Crypto.Util.number import *
import gmpy2
from sympy import *

n = 169571714276836750768696835008286797130964560422135983632253460993844035070277271992940820745023753945894502976570008200589227013451254780779721268856064051799757956338533517600254186053716792892722735738924990872043856059071005689245420166459070018206523542210950116342161822850237993101505160818628595991502441957067340348806649724662522892332480243279436888202057735982434756342193071150485301462887812976898235230327266061793213127098569370855345779167670721322068425019594539396035695141165203949438822818707800302694750619436848158501146001272249288440359876315789666553512511334802790123284335714644770001763786101749041692403224266378333
m1 = 137172276639648887866557875830283309268893058083402908605493428856931096246187056556856467774180211381223871133607767655336431349621874557506065545371474065840072026317886134443311087628235313414310040904327417341374591890476935829706967293090047575836949411
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值