buu [ACTF新生赛2020]crypto-rsa3 1
创始人
2024-05-26 11:44:57

题目描述:

from flag import FLAG
from Cryptodome.Util.number import *
import gmpy2
import random
e=65537
p = getPrime(512)
q = int(gmpy2.next_prime§)
n = p*q
m = bytes_to_long(FLAG)
c = pow(m,e,n)
print(n)
print( c )
n = 177606504836499246970959030226871608885969321778211051080524634084516973331441644993898029573612290095853069264036530459253652875586267946877831055147546910227100566496658148381834683037366134553848011903251252726474047661274223137727688689535823533046778793131902143444408735610821167838717488859902242863683
c = 1457390378511382354771000540945361168984775052693073641682375071407490851289703070905749525830483035988737117653971428424612332020925926617395558868160380601912498299922825914229510166957910451841730028919883807634489834128830801407228447221775264711349928156290102782374379406719292116047581560530382210049

题目分析:

  • 这题已知量:n,c,e
  • 利用 分解n得p,q的在线网站 即可得到 p 与 q
  • 此时便可得到 d = gmpy2.invert(e,(p-1)*(q-1))
  • 然后便可得到明文 m = pow(c,d,n)
  • 最后在转化为字符串即可
  • 代码如下:
import gmpy2
import libnum
n = 177606504836499246970959030226871608885969321778211051080524634084516973331441644993898029573612290095853069264036530459253652875586267946877831055147546910227100566496658148381834683037366134553848011903251252726474047661274223137727688689535823533046778793131902143444408735610821167838717488859902242863683
c = 1457390378511382354771000540945361168984775052693073641682375071407490851289703070905749525830483035988737117653971428424612332020925926617395558868160380601912498299922825914229510166957910451841730028919883807634489834128830801407228447221775264711349928156290102782374379406719292116047581560530382210049
e = 65537
p = 13326909050357447643526585836833969378078147057723054701432842192988717649385731430095055622303549577233495793715580004801634268505725255565021519817179231
q = 13326909050357447643526585836833969378078147057723054701432842192988717649385731430095055622303549577233495793715580004801634268505725255565021519817179293
phi = (p-1)*(q-1)
d = gmpy2.invert(e,phi)
m = pow(c,d,n)
print(libnum.n2s(int(m)))

收获与体会:

这是很基础也很简单的一道题,但重点是要记得公式 (我一开始便有个字母记错了,然后怎么也找不到正确的答案)

相关内容

热门资讯

周三AMD股票情况如何? 周三,尽管纳斯达克综合指数跌0.32%、标普500指数跌0.55%,超威半导体公司(AMD)股价仍上...
华为发布新一代组串式构网PCS... 来源:财评网6月3日,在2026华为智能光伏战略&新品发布会上,华为发布全新一代组串式构网PCS解决...
2026年世界杯比特币投注:6... 2026年6月11日至7月19日世界杯将在美国、加拿大和墨西哥举行,48支球队参赛,共104场比赛。...
博威合金:GB300液冷板材料... 来源:财评网6月3日,博威合金发布投资者关系活动记录表公告,公司供应GB300液冷板材料,产品验证已...
概伦电子收购锐成芯微及纳能微资... 金证(上海)资产评估有限公司近日就上海证券交易所关于概伦电子发行股份及支付现金购买资产并募集配套资金...