2024安徽省现代服务业-信息安全测试员

加密的目标

第一种方法:

第二种方法:

tcp流181

ZmxhZ3s0ZTg0YTExZjQ0NDBhYzlhYWM2MTYyZTNmMTQ1YzI5Mn0

flag{4e84a11f4440ac9aac6162e3f145c292}

EZ_RSA

共模攻击但是要先计算e1和e2 直接`对ec1和ec2分别开3次方和5次方`,得到e1和e2的字符串,分别去除A和D,得到e1和e2,最后共模攻击获得flag。

解题代码:

from Crypto.Util.number import *
import gmpy2


def egcd(a, b):
  if a == 0:
    return (b, 0, 1)
  else:
    g, y, x = egcd(b % a, a)
    return (g, x - (b // a) * y, y)


def deocode(e1,e2,n,c1,c2):
  s = egcd(e1, e2)
  s1 = s[1]
  s2 = s[2]
  if s1 < 0:
    s1 = - s1
    c1 = gmpy2.invert(c1, n)
  elif s2 < 0:
    s2 = - s2
    c2 = gmpy2.invert(c2, n)
  if gmpy2.gcd(e1, e2) == 1:
    print("e1,e2互质")
    message = pow(c1, s1, n) * pow(c2, s2, n) % n
    flag = long_to_bytes(message)
    print(flag)
  elif gmpy2.gcd(e1, e2) != 1:
    message = pow(c1, s1, n) * pow(c2, s2, n) % n
    common_e = gmpy2.gcd(e1, e2)
    print("e1,e2不互质,且公约数为" + str(common_e))
    print(message)
    flag = long_to_bytes((gmpy2.iroot(message, common_e)[0]))
    print(flag)


if __name__ == '__main__':
    n1= 18460760538786243664892472520956491857676356649005288841134830042668754735908873425700580401431869392597236310395468606264753503527796819525187443309830537569533777718640036533370021344812819478534261356139395202594230325693172971547399137188475876067250414424824768354545451689442437840523116196911547640868254788558150870748842755624086527019456436906099793714028950817954614206576077334854332764042927012402676090343657189309305331259882988185272261826224235285628397769633857458525903897633558224494287172432827010785228402709332977304627891603484469809396538030148978072664421664316052527668139081686491202434681
    ec1= 24979839185643431898760549059477070141596292955202172081572583839065034831779499992829742773873064296311713734486020739853343887094398935731264
    c1= 8123400145910061311072953052136708798481068477555692405905172128990691817997598194307367964223285496928446003254361500026109138607940516363104994841460612026217932437565830767471157400161554572655796658468255384681239930282242290735989716587459847445915877013638603764420664189914747859300488661244678828885408266795577798646500408900400794678835146756993669188163377668979442609487187830127641789050938931019008920737894986881446538635812966125252242489860171976981415507878095981611654174094891849678321525065503159298194407551268587960817813495771690454969412863469086847917870459694562108273287721175022496140317
    n2= 18460760538786243664892472520956491857676356649005288841134830042668754735908873425700580401431869392597236310395468606264753503527796819525187443309830537569533777718640036533370021344812819478534261356139395202594230325693172971547399137188475876067250414424824768354545451689442437840523116196911547640868254788558150870748842755624086527019456436906099793714028950817954614206576077334854332764042927012402676090343657189309305331259882988185272261826224235285628397769633857458525903897633558224494287172432827010785228402709332977304627891603484469809396538030148978072664421664316052527668139081686491202434681
    ec2= 2838620519239658396968146844964839207179863729944843241951228382052657801460586137213053314019699976475855578055607417923815486109050614096157077528657405905877896929808094661904905136761365045387901486261011216958309860644255996588189249
    c2= 6074569634330697667681330492815244485958928804448504795548720761982447060164978108962640922011057135272551731865591503834327148647400414964389934640144435290288865391669973163686397560103082615569130786820580679239495370866985049283783485467154925312978043245878983163310461265289513707007112280084171260414428489408483263392654185685518421807036012289122142486215134070364757189584695023309891555064256313962955907431102506663411995855834940128525417923097985331597070813064126540144811158857525854487355133323248341618807984007389139247333333403755117839387511863281816978834393715220081492516983027736901669090517
    byte_e1 = long_to_bytes(gmpy2.iroot(ec1, 3)[0]).split(b'D')[0]
    byte_e2 = long_to_bytes(gmpy2.iroot(ec2, 5)[0]).split(b'A')[0]
    e1 = int(byte_e1)
    e2 = int(byte_e2)
    deocode(e1,e2,n1,c1,c2)

flag{qwert11d4dce2ae36892cee977asdfgh}

posted @   WTT0011  阅读(32)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
点击右上角即可分享
微信分享提示