2021-07-28


[AFCTF2018]One Secret, Two encryption

得到题目
一份秘密发送给两个人不太好吧,那我各自加密一次好啦~~~ 素数生成好慢呀 偷个懒也……不会有问题的吧?
猜出两个n有公因子
可得出p

import gmpy2
from Crypto.Util.number import *
n2=2367536768672000959668181171787295271898789288397672997134843418932405959946739637368044420319861797856771490573443003520137149324080217971836780570522258661419034481514883068092752166752967879497095564732505614751532330408675056285275354250157955321457579006360393218327164804951384290041956551855334492796719901818165788902547584563455747941517296875697241841177219635024461395596117584194226134777078874543699117761893699634303571421106917894215078938885999963580586824497040073241055890328794310025879014294051230590716562942538031883965317397728271589759718376073414632026801806560862906691989093298478752580277
e2=65537
n1=4850297138162223468826481623082440249579136876798312652735204698689613969008632545220976699170308454082390834742570718247804202060929493571642074679428565168405877110681518105667301785653517697684490982375078989886040451115082120928982588380914609273008153977907950532498605486225883973643141516024058315360572988744607134110254489421516026937249163493982681336628726033489124705657217768229058487155865265080427488028921879608338898933540825564889012166181346177276639828346376362168934208822467295673761876965864573164529336885250577357767314256581019474130651412100897839606491189424373959244023695669653213498329
e1=1666626632960368239001159408047765991270250042206244157447171188195657302933019501932101777999510001235736338843107709871785906749393004257614129802061081155861433722380145001537181142613515290138835765236002811689986472280762408157176437503021753061588746520433720734608953639111558556930490721517579994493088551013050835690019772600744317398218183883402192060480979979456469937863257781362521184578142129444122428832106721725409309113975986436241662107879085361014650716439042856013203440242834878648506244428367706708431121109714505981728529818874621868624754285069693368779495316600601299037277003994790396589299
p=gmpy2.gcd(n1,n2)
q1=n1//p
q2=n2//p
phi=(p-1)*(q1-1)
d=gmpy2.invert(e1,phi)
f=open("flag_encry1","rb").read()
c=bytes_to_long(f)
print(long_to_bytes(pow(c,d,n1)))

36D杯

rsaEZ

得到公钥文件解一下得到n和e
分解n
三个加密文件解密

import gmpy2
from Crypto.Util.number import *
n=98432079271513130981267919056149161631892822707167177858831841699521774310891
e=65537
p=302825536744096741518546212761194311477
q=325045504186436346209877301320131277983
d=gmpy2.invert(e,(p-1)*(q-1))
f1=open("encrypted.message1","rb").read()
f2=open("encrypted.message2","rb").read()
f3=open("encrypted.message3","rb").read()
c1=bytes_to_long(f1)
m1=pow(c1,d,n)
c2=bytes_to_long(f2)
m2=pow(c2,d,n)
c3=bytes_to_long(f3)
m3=pow(c3,d,n)
print(long_to_bytes(m1))
print(long_to_bytes(m2))
print(long_to_bytes(m3))
'''
b'\x02Z\x80\x07\xe9\xad(\t\xab\xbfZ\x00flag{3b6d3806-4b2b\n'
b'\x02\xd2\xb9{n\xa0\xd9\xe5\x16\x9e\x1b\xc1LH\xa0\xdb\xecT\x00-11e7-95a0-\n'
b'\x02eN\xe6$Cq\xf5D+O\xc8\xb9m\x7f/\x00000c29d7e93d}\n'
'''
#flag{3b6d3806-4b2b-11e7-95a0-c29d7e93d}

总结

该学数论啦

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值