【ctf学习】RSA共模攻击

已知n,c1,e1,c2,e2
比如:

from gmpy2 import *
from Crypto.Util.number import *


m=bytes_to_long(flag)

e1=7001
e2=3079
p = getPrime(1024)
q = getPrime(1024)
n=p*q

c1=pow(m,e1,n)
c2=pow(m,e2,n)
print("c1=",c1)
print("c2=",c2)
print("n=",n)

# c1= 1179153009397216598435898664913013906721360772936512662052101517459316764759394123779110824706919596160059480389897297984413854798129231534050088239302915080096868653406434933153504253796756127783150591979031377593664991914139444617462866102693114255049799366851349147045348109837232977242072799358648664465097080210523116817706588355666253552059897922840796198643551171891950926861434055056878817543255295477956358349041368662583962423973344907977264141171007831950656784252421648269386781811809187335222160920871727444855984188440076944890976216752295980633208084446503718437524250279216357185194942302140230922610
# c2= 10437325197718377420665183751052604683752972545290976240469209685271037477384754993053810382998433228103616101449726385851997935766943643332857266437709868815387917630328854036452459233777621967075482861046941947395697941956244624621510141249205563291092459018609413863700860900988791233252119983715164060405299920622406494732525133298295868214045353696012049378668692522893346357415390844076187674965329077645927257855907625431886978472656450813208155595570774901953086683946195721505972522014286767402309561349994937363566840449420931256390206713457347605809974472962163669963069609049342951183497365499358676894242
# n= 25612176987355339470206103342017662848275198016350363396290279785817927653026648758571670952455756798264924232136700974988254325434407111109544897931117811122565438908979983475543301447654711984022075358842944791188230852439351709302741572945625100401411546677530277065785352496834220675976664934261809940721664515331727470708170990247623590880857777126947437063425952974351809046512144535059244718953470066327907760202072544755669135299495948865125668296451196466853694738895439804955733917030945042274083320229375058008923529536808540906589588764953755183612320358911230528598709712821599904510988266080790297066857

原理:
e1和e2互质的情况下,由拓展欧几里得定理
e1x+e2y=1
此时 c1x*c2y=me1*x*me2*y=m(modn)
根据这个原理来写解密脚本

from gmpy2 import *
from Crypto.Ut
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值