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

收获与体会:

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

相关内容

热门资讯

古巴外长:古巴人民将抵御侵略捍... 转自:北京日报客户端古巴外交部长罗德里格斯6日表示,忠于国家斗争历史的古巴人民将抵御任何帝国主义侵略...
银杏送福 年味相传 (来源:湖州日报)转自:湖州日报  湖州市新风实验小学教育集团近日开展“银杏送福·年味相传”校园年货...
四部门联合发文推进职工文体工作... 近日,全国总工会、文化和旅游部、国家电影局、国家体育总局联合印发《关于深入推进新时代职工文体工作高质...
俄外交部声明:愿继续向委内瑞拉... 中新社莫斯科1月6日电 俄罗斯外交部6日发表声明,愿继续向委内瑞拉提供必要支持,并呼吁通过建设性对话...
沈阳市皇姑区举办惠民书画展 本报讯 记者朱柏玲报道 日前,“笔端生福运 墨韵贺新元”惠民书画展暨文化馆书法培训班结业交流活动在沈...