第三题(小m)

题目:

import libnum
flag = "flag{&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&}"

m = libnum.s2n(flag)
p = libnum.generate_prime(1024)
q = libnum.generate_prime(1024)
n = p*q
e = 7
c = pow(m,e,n)
M = ((m >> 128) << 128)

print("n=",n)
print("c=",c)
print("((m>>60)<<60)=",M)


n= 11641876404223838031044053075068004412888254845126129959298317769039828661300847167590011078814384924146516243252335723927638602939336263670042754305134563529327623177562227567597098228748291527396137372544178817944076777012844620273115528633812841474576583855479630838450419496432264580104739131121660696741175941183938902719828134419252600529120752637902383122280475009870901377771340004347070328239515854039699514158942488552277056103324966365423691867674519370636154863977044307434572410760411174788443461173043525488719696375984232809515863439041325084894711826506679213938429647434166916283697460579620360510417
c= 630126267900096065199675723365572749784659170093253019252252289224258559435031835900231978967843180392268864676843237096005638676956674492832090514028654003812791866213739842806237503559558228137720131847274829524789805267984332148421078737260511845315323054929207231043106617499022447112702501840384673819128829533832457667852759787845041600338155971800991351964453510824357833112218654032548113106677
((m>>60)<<60)= 2511413510841768941799598030693692780493324549090323726336

我们发现n过大,而c相比于n很小

故直接对c开e次方根

EXP:

from Cryptodome.Util.number import *
from gmpy2 import iroot
n= 11641876404223838031044053075068004412888254845126129959298317769039828661300847167590011078814384924146516243252335723927638602939336263670042754305134563529327623177562227567597098228748291527396137372544178817944076777012844620273115528633812841474576583855479630838450419496432264580104739131121660696741175941183938902719828134419252600529120752637902383122280475009870901377771340004347070328239515854039699514158942488552277056103324966365423691867674519370636154863977044307434572410760411174788443461173043525488719696375984232809515863439041325084894711826506679213938429647434166916283697460579620360510417
c= 630126267900096065199675723365572749784659170093253019252252289224258559435031835900231978967843180392268864676843237096005638676956674492832090514028654003812791866213739842806237503559558228137720131847274829524789805267984332148421078737260511845315323054929207231043106617499022447112702501840384673819128829533832457667852759787845041600338155971800991351964453510824357833112218654032548113106677
mmm= 2511413510841768941799598030693692780493324549090323726336
mm=mmm>>60
m1=mm<<60
print(m1)
m1=2511413510841768941799598030693692780493324549090323726336
print(long_to_bytes(m1).decode())
m2=iroot(c,7)
print(m2)
m2=2511413510841768941960930207721297372982664263674275063933
print(long_to_bytes(m2).decode())

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值