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)))

收获与体会:

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

相关内容

热门资讯

多彩课堂助成长 (来源:内蒙古日报)转自:内蒙古日报5月6日,包头市昆都仑区第一实验小学学生正在学习西点制作。近年来...
伊朗官员称目前该国石化产品供应... 转自:财联社【伊朗官员称目前该国石化产品供应充足】财联社5月7日电,伊朗议会经济委员会一名成员当地时...
俄谴责乌军袭击致5名平民死亡 转自:成都日报锦观俄谴责乌军袭击致5名平民死亡 俄罗斯外交部发言人扎哈罗娃6日谴责乌军袭击了克...
每年支持校企合作开设一批订单班 转自:成都日报锦观成都出台《工作方案》,开展“订单式”技能人才培养每年支持校企合作开设一批订单班 ...
人类与鸟类都需要这场奇特的相遇 转自:成都日报锦观人类与鸟类都需要这场奇特的相遇 北京生物多样性保护研究中心研究员、科普作家郭...