第四天---RSA进阶题型

news/2024/11/16 18:53:52/文章来源:https://www.cnblogs.com/yanxiao777/p/18390940

T1.小明文攻击

一.题目:

from Crypto.Util.number import *
from gmpy2 import *flag = b'NSSCTF{******}'p = getPrime(5120)
q = getPrime(5120)n = p*q
e = 97
phi = (p-1)*(q-1)m = bytes_to_long(flag)
c = powmod(m, e, n)print(f'n = {n}')
print(f'e = {e}')
print(f'c = {c}')'''
n = 1392208858696945158251408085300402884210409327605255122395601049457847957306648819174395014931778575812308192875319127224095733396726388842605854427013313599830150182564652493067830031524869535522568868597852507293377043240832819715539722122306829543983051745406887140154364256267942350230636870212935356815475345989038318923389132101208917912083817520799490534351545373438629367819085151041702754019127891155542476560972125790519584018715794669416759039955180436830478697704458250990786586357019211642837879273967620287257818400267757312623543898635740200839249361087580046496969637043238450499583879116276661827372750638403042213043389905183760455450595752578482968202040860053524276678108325784161897719093223308370971388068813420487879756084379519128232693549989942550047529174783976176943482484756074638704076740157397067892580297182979526978967352014250386678155843772313996171396582929433057131989693861316408604436872931427368192437680361830753162284661119995125858203931094922686321756465463988790748131178263745308042820480140189644732824717255521633534750635979508673908361269979175726073254050574688259969290376926807033728165164896588540691889207252105903436659968119091774687841336252628343233161941187968365128093917171537997137001140227677728923114895809278926486615010954871408034272872411042537353956193868948909981683850857262457369506288525323882308421700421661036191853577105238753230479541719001794464585534292774768292358961920606891227776349593589481547577148801600196035588544512224775960892265021565124673788852875005526313525709353599584812394138968970647681759439523307392275602626903789154682706839530654070108096741181206975334567778238856983205004289416400671597321919876279909765650782227834097342294844294386380646928266942749144240020420237153276705785759403019072953506982997681174635673907151856644499332322321579088035719680421458310273802481031746012298208449699089203065699598926690947025679591160106357130634946357609420125223580319677387654711233585375013067828291928349946599077331636017784447090096340360087970540477975170379810969501197027775838769222713506443846417124839450184827707739588007707714623211453528342755023849716924694572679150284882978804641986457119009272574734697043321033091757474387114449914271460113979531460465175717705674905568446670579332667139075523255580471183372714211547822093365025438653384719374474230360983878837077517864405475258349436531094649276628214288499716485354283135575921258757214288792410583835467572916298688718758374714560819702413058421373661892101033513816116981698045524150518509405086125781764762145577981637953775680403132163846782252745029783387112660812179706752454175492501665442704630131729362621965258498471247871904163412798544329515689112368523703890083138721480476796720323855371775568097188216621368341228806795058046403892301673157631331636430392885315997250027372621883549649614866115616619234953579196607399899485002042456482969222428121605212017146571466818179341621066715472184636758016242256725063854155219754299817717414423725704356940589670902509021070871847017199593680033
e = 97
c = 79418540691422578656139651796213224829563266521211325595707569487401417030874358531413674275017334363641194166574500833916574827523075402219754470871728896772312056257743844227927800121160288525434484105786180547178403828613331285574461293211150728313415280329153597549251599876668080073528625299164784405291297754331374420687599875173508778209038236713812747215157059659564867241144529476211694011692007565732793105429228730285249025627762831080251661835294067942958070742202862164086250986988784472568266652325462247009294865764533077164470382743735937483173523682749295196383707694876943634298051820105410771024861599560176707940488888601355473498847493259474613261665538825299531665650233837474894442826242097663456648233384047622152817959729025415665280499618951478005159820575701483220155180955748454167435711033379910310483689839303198822665341421591234243891877857520663120183063591818656508336831518527692847950877186870610083654117153248336928856886934232488927132245720058243202637258025864487122393335118118013444397135476780564523166548571927547341556616683070253790368891423731046742936358877118104790084195711730135202600692806999992373490439385845158780392894927697171401722699273071306493916233696254958735540772870249139252741670476667099529502282392011715616110876451102234600267482991583515122052976378641894214562203326290939184469206074418127906704847146567350085797480500249400491003993809769407575997740985283755035509654310797061339563655229926356893455738361409861102662109994984398860070584568014471082484198504331014073023689622378943694856212172718725529473812336321642429261822836311084518735006587545920946664595488768239633950124822001162595168106106356115962424210028401369438479550293237915944302351566624339603616714683958384871326105542659559877758488581425288668613061792514360263277530824203967659102107889148367539858141289229124274098921748855341045565232484417195620758495861456624842263649414501657786484816662971421962216348340311859717286253287173293151613310383128702607971580042308515018120559903265609733911340589091613087560931098833849573462572181625894166772788435459280323623477689159384354671220634694792005231505741029567734616435905915192606539962414882105254409847885996949466940350184140166614950171110955365828033747003120697209120916652982201967537088553504504252785632280900095976870510754563400828951684036526240669112248351928072177486091157562600003336544767896806392523395037345770580482363058065676920013089896399387769312374871419827762872050800055872960573607645266626972865053489632548224840580503746879607167797904430560935476705014800973841917939689270919224595772574781478285359220463175042728750523639669204218676238297875644055563803457896409252533724486937378974745777400567080239687055154021761534918106133195512030935957251049812753269173090858930245212145938555697547499155977225759702066548720079477737104010668116693232798415289735481194922014811945312893853446826780868861295203942063380964100360870361328125
'''

关键步骤:

p = getPrime(5120)
q = getPrime(5120)

N很大

二.解题wp以及代码:

1.思路: n很大,满足m**e次方<n,直接开方得到明文

看到N很大,如果满足

img

就表示模过程中,没有丢失信息,所以

img

直接解即可,不要管pq等等

2.解题代码:

from Crypto.Util.number import *
from gmpy2 import *
n  = 1392208858696945158251408085300402884210409327605255122395601049457847957306648819174395014931778575812308192875319127224095733396726388842605854427013313599830150182564652493067830031524869535522568868597852507293377043240832819715539722122306829543983051745406887140154364256267942350230636870212935356815475345989038318923389132101208917912083817520799490534351545373438629367819085151041702754019127891155542476560972125790519584018715794669416759039955180436830478697704458250990786586357019211642837879273967620287257818400267757312623543898635740200839249361087580046496969637043238450499583879116276661827372750638403042213043389905183760455450595752578482968202040860053524276678108325784161897719093223308370971388068813420487879756084379519128232693549989942550047529174783976176943482484756074638704076740157397067892580297182979526978967352014250386678155843772313996171396582929433057131989693861316408604436872931427368192437680361830753162284661119995125858203931094922686321756465463988790748131178263745308042820480140189644732824717255521633534750635979508673908361269979175726073254050574688259969290376926807033728165164896588540691889207252105903436659968119091774687841336252628343233161941187968365128093917171537997137001140227677728923114895809278926486615010954871408034272872411042537353956193868948909981683850857262457369506288525323882308421700421661036191853577105238753230479541719001794464585534292774768292358961920606891227776349593589481547577148801600196035588544512224775960892265021565124673788852875005526313525709353599584812394138968970647681759439523307392275602626903789154682706839530654070108096741181206975334567778238856983205004289416400671597321919876279909765650782227834097342294844294386380646928266942749144240020420237153276705785759403019072953506982997681174635673907151856644499332322321579088035719680421458310273802481031746012298208449699089203065699598926690947025679591160106357130634946357609420125223580319677387654711233585375013067828291928349946599077331636017784447090096340360087970540477975170379810969501197027775838769222713506443846417124839450184827707739588007707714623211453528342755023849716924694572679150284882978804641986457119009272574734697043321033091757474387114449914271460113979531460465175717705674905568446670579332667139075523255580471183372714211547822093365025438653384719374474230360983878837077517864405475258349436531094649276628214288499716485354283135575921258757214288792410583835467572916298688718758374714560819702413058421373661892101033513816116981698045524150518509405086125781764762145577981637953775680403132163846782252745029783387112660812179706752454175492501665442704630131729362621965258498471247871904163412798544329515689112368523703890083138721480476796720323855371775568097188216621368341228806795058046403892301673157631331636430392885315997250027372621883549649614866115616619234953579196607399899485002042456482969222428121605212017146571466818179341621066715472184636758016242256725063854155219754299817717414423725704356940589670902509021070871847017199593680033
e = 97
c = 79418540691422578656139651796213224829563266521211325595707569487401417030874358531413674275017334363641194166574500833916574827523075402219754470871728896772312056257743844227927800121160288525434484105786180547178403828613331285574461293211150728313415280329153597549251599876668080073528625299164784405291297754331374420687599875173508778209038236713812747215157059659564867241144529476211694011692007565732793105429228730285249025627762831080251661835294067942958070742202862164086250986988784472568266652325462247009294865764533077164470382743735937483173523682749295196383707694876943634298051820105410771024861599560176707940488888601355473498847493259474613261665538825299531665650233837474894442826242097663456648233384047622152817959729025415665280499618951478005159820575701483220155180955748454167435711033379910310483689839303198822665341421591234243891877857520663120183063591818656508336831518527692847950877186870610083654117153248336928856886934232488927132245720058243202637258025864487122393335118118013444397135476780564523166548571927547341556616683070253790368891423731046742936358877118104790084195711730135202600692806999992373490439385845158780392894927697171401722699273071306493916233696254958735540772870249139252741670476667099529502282392011715616110876451102234600267482991583515122052976378641894214562203326290939184469206074418127906704847146567350085797480500249400491003993809769407575997740985283755035509654310797061339563655229926356893455738361409861102662109994984398860070584568014471082484198504331014073023689622378943694856212172718725529473812336321642429261822836311084518735006587545920946664595488768239633950124822001162595168106106356115962424210028401369438479550293237915944302351566624339603616714683958384871326105542659559877758488581425288668613061792514360263277530824203967659102107889148367539858141289229124274098921748855341045565232484417195620758495861456624842263649414501657786484816662971421962216348340311859717286253287173293151613310383128702607971580042308515018120559903265609733911340589091613087560931098833849573462572181625894166772788435459280323623477689159384354671220634694792005231505741029567734616435905915192606539962414882105254409847885996949466940350184140166614950171110955365828033747003120697209120916652982201967537088553504504252785632280900095976870510754563400828951684036526240669112248351928072177486091157562600003336544767896806392523395037345770580482363058065676920013089896399387769312374871419827762872050800055872960573607645266626972865053489632548224840580503746879607167797904430560935476705014800973841917939689270919224595772574781478285359220463175042728750523639669204218676238297875644055563803457896409252533724486937378974745777400567080239687055154021761534918106133195512030935957251049812753269173090858930245212145938555697547499155977225759702066548720079477737104010668116693232798415289735481194922014811945312893853446826780868861295203942063380964100360870361328125m = iroot(c, e)print(long_to_bytes(m[0]))#m[0]
代码解读

我们使用gmpy2中的iroot开任意次方,用法为iroot(10, 3)代表对10开3次方,返回结果为(mpz(2), False),其中第一项为返回的结果,mpzgmpy2包中对整数的封装类,看作一个整数即可,第二项代表这个数是否为完全开放的结果,例如103310并不是一个整数,但gmpy2只会返回取整后的整数值,故通过第二项我们能够知道是否为完全k次方数。

例如iroot(9, 2)返回(mpz(3), True)代表9是一个完全平方数。

T2.低密度指数加密

一.题目:

from Crypto.Util.number import *
from gmpy2 import *flag = b'NSSCTF{******}'p = getPrime(512)
q = getPrime(512)n = p*q
e = 3
phi = (p-1)*(q-1)
m = bytes_to_long(flag)c = powmod(m, e, n)print(f'n = {n}')
print(f'e = {e}')
print(f'c = {c}')'''
n = 111573371787314339229652810703380127177507745009618224416171957526984270337589283887959174610818933914845556276472159360153787395638087723501889651641965684241070152541291185349571453536221312112508437223801640552330390095266644485311958102687735113533739324296417077804219395793942670324182191309872918900717
e = 3
c = 90782646242308381145716338972639920044710403094882163620436540965475107006005657722222634294458956650085252212452241377251397323707019480880284004845674260662647720809672266571040936376737882878688872281858048646517100139303896804340224961592424635124272549514473232731744884837572128596217771005209683966262
'''

关键步骤:

p = getPrime(512)
q = getPrime(512)n = p*q
e = 3

二.解题wp以及代码:

1.思路: 依然n很大,但是也模出去了一点数据,但是也可以爆破出来,继续开方解密(同T1一样)

小明文进阶的算法,直接开方解没有解出来,但是N也爆破不了,可能是低密度指数解密攻击

img

用脚本爆破解密k,再用小明文攻击解密flag

(这里爆破范围10w,100w,1000w对于计算机都算小的)

风佬解释

img

2.解题代码:

from Crypto.Util.number import *
from gmpy2 import *
n = 111573371787314339229652810703380127177507745009618224416171957526984270337589283887959174610818933914845556276472159360153787395638087723501889651641965684241070152541291185349571453536221312112508437223801640552330390095266644485311958102687735113533739324296417077804219395793942670324182191309872918900717
e = 3
c = 90782646242308381145716338972639920044710403094882163620436540965475107006005657722222634294458956650085252212452241377251397323707019480880284004845674260662647720809672266571040936376737882878688872281858048646517100139303896804340224961592424635124272549514473232731744884837572128596217771005209683966262for k in range(100000):cc = c + k*nres = iroot(cc, e)if res[1]:m = res[0]break
print(res[0])     #m
print(res[1])     #开方后的布尔值
print(long_to_bytes(m))
print('k:',k) # 11

代码解释:

res = iroot(cc, e)
接下来,调用一个名为iroot的函数(这个函数可能用于计算整数根),并将cc和e作为参数传递。这个函数返回一个包含两个元素的元组res。根据函数名和常见用法,我们可以猜测iroot函数可能试图找到cc的e次方根,并返回一个元组,其中第一个元素是根的值,第二个元素可能是一个布尔值,指示是否成功找到根。if res[1]:
这行代码检查res元组的第二个元素(即res[1])是否为真。根据上面的假设,这个值可能是一个布尔值,指示iroot函数是否成功找到根。m = res[0]
如果res[1]为真(即iroot函数成功找到了根),则将res元组的第一个元素(即根的值)赋值给变量m。

T3.Rabin算法攻击

来到这里开始上强度了,今天就学习5种攻击方式吧,要不然难以消化,后面去其他方向玩玩,现在还差3题

一.题目:

from Crypto.Util.number import *
from gmpy2 import *flag = b'NSSCTF{******}'p = getPrime(256)
q = getPrime(256)assert p%4 == 3 and q%4 == 3n = p*q
e = 2
m = bytes_to_long(flag)c = powmod(m, e, n)print(f'p = {p}')
print(f'q = {q}')
print(f'e = {e}')
print(f'c = {c}')'''
p = 67711062621608175960173275013534737889372437946924512522469843485353704013203
q = 91200252033239924238625443698357031288749612243099728355449192607988117291739
e = 2
c = 5251890478898826530186837207902117236305266861227697352434308106457554098811792713226801824100629792962861125855696719512180887415808454466978721678349614
'''

关键步骤:

assert p%4 == 3 and q%4 == 3
e=2

这两个步骤就是Rabin算法的关键节点

二.解题wp以及代码:

1.思路: Rabin算法,中国剩余定理来接解题

需要大家了解二次剩余(平方剩余),中国剩余定理,我这里写上公式,需要你自己去深入了解一下,也不是很难(下面是一个Rabin算法视频地址,rabin算法讲的很好)

现代密码学|Rabin密码体制及其数学基础_哔哩哔哩_bilibili

二次剩余

中国剩余定理(CRT)

img

主要是求X

m1,m2,m3....mk是知道的

a1,a2,a3....ak是也知道的

M*-1是m的逆元

(逆元不懂的话就得自己去学了,这是基础)

代入公式就可以解X了

img

视频解读

img

平方剩余

条件:a与n互素

img

RSA中的Rabin算法

e=2且p和q在模4的情况下同余 满足Rabin算法

img

img

1.密钥的产生满足Rabin算法

img

2.加密

img

3.解密:

当n=pq时,可以拆成两个两个式子

img

同余可以转换

img

转换到可以开方的就开方

img

x=+3mod7或者-3mod7

利用平方剩余得到4个同余方程

img

每一个方程组利用中国剩余定理解得一个x,一共有4个x,总有一个是对的

3.解题代码:
from Crypto.Util.number import *
from gmpy2 import *p = 67711062621608175960173275013534737889372437946924512522469843485353704013203
q = 91200252033239924238625443698357031288749612243099728355449192607988117291739
e = 2
c = 5251890478898826530186837207902117236305266861227697352434308106457554098811792713226801824100629792962861125855696719512180887415808454466978721678349614def rabin_attack(c, n, p, q):c1 = powmod(c, (p+1)//4, p)c2 = powmod(c, (q+1)//4, q)cp1 = p - c1cp2 = q - c2t1 = invert(p, q)t2 = invert(q, p)m1 = (q*c1*c2 + p*c2*t1) % nm2 = (q*c1*t2 + p*cp2*t1) % nm3 = (q*cp1*t2 + p*c2*t1) % nm4 = (q*cp1*t2 + p*cp2*t1) % nreturn m1, m2, m3, m4ms = rabin_attack(c, p*q, p, q)for m in ms:print(long_to_bytes(m))
"""
b'\x1b*\x05\xc8\tugt\xaf#S\xa7\xf5\x82\x82H\xa8t\x01\x159\x11\xa8{1\x93\x87Y\xa5\x17\x8b*?\nk\x03\xfb\x0cr\xcb\x90\xbe\x8d9\xaf\xd8M\x1d.\xfa B\xf9m\xda\t}\xcfC\x9b>\x7f\xbb\xc0'
b"u\xe8\x12C-\xcf'\xc2\x19\xd6\x1f\xf50\x96=\x0f_W*S6\xf7\x14\xcf \xcf\xfb\xb8,\x14p0\xe7\xfe\xbf\x96\x16p\x8fsW\x99\x8d|\x90\x1b\xa1\x95\n\xc9\x95\xfc\xcc\x08\x9b\xea>\x84:M\x93\xf5\xf1D"
b'NSSCTF{rabin!rabin!rabin!not_just_rsa!}'
b'%~4\x16\xc7\xa9G\xa2\xb6\x04@\xaa\x16\x99\xc8\xd9\xa6R\xe9\x8f\xcf\x92\xa8%:\x1e)b\x8bE\xd2\x01\x16\xa9sG6\xdf\xed=\xb9\xa2\xd8\xf7l\xae\xed{.\xc3{$\x85Q\x87\tm\xe08\xe3\x10=\x06\xb3'"""
代码解读
def rabin_attack(c, n, p, q):c1 = powmod(c, (p+1)//4, p)  #pow作用一样c2 = powmod(c, (q+1)//4, q)cp1 = p - c1cp2 = q - c2t1 = invert(p, q)t2 = invert(q, p)m1 = (q*c1*c2 + p*c2*t1) % nm2 = (q*c1*t2 + p*cp2*t1) % nm3 = (q*cp1*t2 + p*c2*t1) % nm4 = (q*cp1*t2 + p*cp2*t1) % nreturn m1, m2, m3, m4

中国剩余定理

img

图解

img

img

img

img

img

这里由下面的费马小定理得

费马小定理

img

img

学习一个攻击就是要学习算法以及代码实现

T8.共模攻击

一.题目:

from Crypto.Util.number import *flag = b'NSSCTF{******}'p = getPrime(512)
q = getPrime(512)n = p*q
e1 = getPrime(16)
e2 = getPrime(16)m = bytes_to_long(flag)c1 = pow(m, e1, n)
c2 = pow(m, e2, n)print(f'n = {n}')
print(f'e1 = {e1}')
print(f'e2 = {e2}')
print(f'c1 = {c1}')
print(f'c2 = {c2}')'''
n = 120294155186626082670474649118722298040433501930335450479777638508444129059776534554344361441717048531505985491664356283524886091709370969857047470362547600390987665105196367975719516115980157839088766927450099353377496192206005171597109864609567336679138620134544004766539483664270351472198486955623315909571
e1 = 38317
e2 = 63409
c1 = 42703138696187395030337205860503270214353151588149506110731264952595193757235229215067638858431493587093612397165407221394174690263691095324298012134779703041752810028935711214038835584823385108771901216441784673199846041109074467177891680923593206326788523158180637665813642688824593788192044139055552031622
c2 = 50460092786111470408945316270086812807230253234809303694007902628924057713984397041141665125615735752600114964852157684904429928771531639899496987905067366415806771003121954852465731110629459725994454904159277228514337278105207721011579794604761255522391446534458815389983562890631994726687526070228315925638
'''

关键步骤: 两个公钥e,两个密文,并且共模

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

二.解题代码

1.解题思路:共模攻击,利用翡镯定理找出s1,s2

img

翡镯定理+扩展欧几里得

2.共模攻击条件: 两个公钥e互素,共模

3.解题代码

from Crypto.Util.number import *
from gmpy2 import *n = 120294155186626082670474649118722298040433501930335450479777638508444129059776534554344361441717048531505985491664356283524886091709370969857047470362547600390987665105196367975719516115980157839088766927450099353377496192206005171597109864609567336679138620134544004766539483664270351472198486955623315909571
e1 = 38317
e2 = 63409
c1 = 42703138696187395030337205860503270214353151588149506110731264952595193757235229215067638858431493587093612397165407221394174690263691095324298012134779703041752810028935711214038835584823385108771901216441784673199846041109074467177891680923593206326788523158180637665813642688824593788192044139055552031622
c2 = 50460092786111470408945316270086812807230253234809303694007902628924057713984397041141665125615735752600114964852157684904429928771531639899496987905067366415806771003121954852465731110629459725994454904159277228514337278105207721011579794604761255522391446534458815389983562890631994726687526070228315925638_, s1, s2 = gcdext(e1, e2)m = powmod(c1, s1, n)*powmod(c2, s2, n) % n
print(long_to_bytes(m))
代码解读

img

代表左边和右边在模n的情况下相等,

因为m<n,所以左边模n等于m

img

代码解释:
(1)_, s1, s2 = gcdext(e1, e2)解释
_, s1, s2 = gcdext(e1, e2)

在Python中,下划线 _ 通常用作一个“丢弃”的变量名,用于在解构赋值时表示我们不需要这个值。当你从函数或方法中解构得到一个返回值,但你对其中一个或多个值不感兴趣时,可以使用下划线 _。

img

img

(2)powmod(c, s, n)与pow(c, s, n)区别

img

T9.dp&dq泄露攻击

一.题目:

from Crypto.Util.number import *flag = b'NSSCTF{******}'p = getPrime(512)
q = getPrime(512)n = p*q
e = getPrime(128)
d = inverse(e, (p-1)*(q-1))dp = d % (p-1)
dq = d % (q-1)m = bytes_to_long(flag)c = pow(m, e, n)print(f'p = {p}')
print(f'q = {q}')
print(f'c = {c}')
print(f'dp = {dp}')
print(f'dq = {dq}')'''
p = 13070310882303377463944295715444821218324151935347454554272870042925400761984585838979931730897626589859098834802923539617244712852188293321626061072925723
q = 10411551818233737389114520103233235272671271111546186997024935593000298916988792710521511848414549553426943998093077337023514210631662189798921671306236009
c = 62492280219693914005334023569480350249964827909276875032578276064973191654731196407886841145547165693859745313398152742796887457192397932684370631253099255490064673499746314452067588181106154875239985334051909867580794242253066085627399488604907196244465911471895118443199543361883148941963668551684228132814
dp = 11568639544706374912496682299967972464196129347160700749666263275305083977187758414725188926013198988871173614336707804756059951725809300386252339177953017
dq = 3455040841431633020487528316853620383411361966784138992524801280785753201070735373348570840039176552952269927122259706586236960440300255065994052962742469
'''

关键步骤:没有给公钥e

dp = d % (p-1)
dq = d % (q-1)

二.思路以及wp

1.思路:dp&dq转换

img

这里注意,因为上面的cd=m_1+kp, <=>cd+kp=m

img

2.解题代码:

from Crypto.Util.number import *
from gmpy2 import *p = 13070310882303377463944295715444821218324151935347454554272870042925400761984585838979931730897626589859098834802923539617244712852188293321626061072925723
q = 10411551818233737389114520103233235272671271111546186997024935593000298916988792710521511848414549553426943998093077337023514210631662189798921671306236009
c = 62492280219693914005334023569480350249964827909276875032578276064973191654731196407886841145547165693859745313398152742796887457192397932684370631253099255490064673499746314452067588181106154875239985334051909867580794242253066085627399488604907196244465911471895118443199543361883148941963668551684228132814
dp = 11568639544706374912496682299967972464196129347160700749666263275305083977187758414725188926013198988871173614336707804756059951725809300386252339177953017
dq = 3455040841431633020487528316853620383411361966784138992524801280785753201070735373348570840039176552952269927122259706586236960440300255065994052962742469invp = invert(p, q)
m1 = powmod(c, dp, p)
m2 = powmod(c, dq, q)
m = (((m2 - m1)*invp) % q)*p + m1
print(long_to_bytes(m))

结语:

我的排版是按照NSSCTF工坊来的,跳了一些题,我没有完全理解,所以写不出自己的总结,就先跳,后面先过一遍再来细挖,今天5个题型,OK,下课。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/790295.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电路基础 ---- 负反馈放大电路的方框图分析法

1 方框图分析法 方框图如下:图中\(A_{uo}\)是一个电压输入的放大器的放大倍数,称为开环放大倍数。 \(F\)为反馈系数,是一个矢量,是指输出信号\(x_{o}\)的多少倍回送到放大器的输入端。 \(M\)为衰减系数,也是一个矢量,是指输入信号的多少倍,进入放大器的输入端。根据上述…

抖音直播间自动发评论-网页端浏览器插件

开发了一个浏览器插件,可以实现在抖音直播间页面获取到评论 并且可以循环自动发送评论,只需要把话术列表填写上,并且点击直播间循环发送按钮,就可以自动在直播间发送了十年开发经验程序员,离职全心创业中,历时三年开发出的产品《唯一客服系统》一款基于Golang+Vue开发的在…

Docker企业级镜像仓库Harbor

Docker企业级镜像仓库Harbor 容器管理 [root@docker01 harbor]# pwd /opt/harbor [root@docker01 harbor]# docker-compose stop15.1 安装Harbor 15.1.1 安装docker、docker-compose 下载 harbor wget https://storage.googleapis.com/harbor-releases/harbor-offline-installe…

启动zabbix容器

启动zabbix容器 启动一个mysql的容器 docker run --name mysql-server -t \-e MYSQL_DATABASE="zabbix" \-e MYSQL_USER="zabbix" \-e MYSQL_PASSWORD="zabbix_pwd" \-e MYSQL_ROOT_PASSWORD="root_pwd" \-d mysql:5.7 \--character-s…

作业一:自我介绍+软工5问

这个作业属于哪个课程 班级地址这个作业要求在哪里 作业要求这个作业的目标 预习软件工程导论,初识markdown编辑、使用github和博客园自我介绍 大家好,很高兴能和大家一起学习这门团队型作业比较多的课程。我是来自22级计算机2班的杨智雄,来自广东汕尾,我是04年生,平时的兴…

343. 整数拆分(leetcode)

https://leetcode.cn/problems/integer-break/ dp,思路较为巧妙,需要考虑一个数至少能拆成两份这个点,且需要考虑到拆的这个数的值域是多少(1,i-1)且选择拆一次还是拆多次class Solution { public:int integerBreak(int n) {// f[i]表示拆分i成若干个整数的最大乘积// f[i] = m…

大请求、请求超时问题

耗时很长的请求怎么处理?比如数据量大的。业务逻辑处理时间太久,以至于响应超时 这里的超时响应指的是ReadTimeOut,即发送请求内容完毕到接收响应数据开始的这段时间。普通HTTP请求可能在这段时间没有响应超时。 HTTP分块传输(Chunked Transfer Encoding)中每个数据块的到…

vue2项目中使用webworker(一):发送网络请求

背景 有的时候我们需要向后端发送多个网络请求,如果全部在主线程中操作的话页面会变得非常卡顿,我们可以使用webwoker来发送网络请求,一旦服务响应结果,我们再从子线程给主线程发送消息 步骤 默认情况下vue2是不支持webwoker。安装worker-loadernpm i -D worker-loadervue.…

nginx出现403错误的解决方法

nginx出现403错误的解决方法 2024/08/31 17:06:52 [error] 26005#26005: *11 "/root//frontend/dist/index.html" is forbidden (13: Permission denied), client: 220.196.160.53, server: 81.70.112.191, request: "GET / HTTP/1.1", host: "81.70…

机组复习

1.数字计算机如何分类?分类的依据是什么?①按存储量大小分类:分为巨型、大型、中型、小型机和微型机。②从传输方式和操作方式分类:分为串行机和并行机。③按电路组成分类:分为电子管、晶体管、集成电路、大规模集成电路。④按用途分类:分为通用计算机、数据处理机和控制…

搭建博客

Hexo+Git 安装Hexo hexo文档 1.先行条件 安装以下应用程序Node.js Git检验是否安装成功 win+r输入cmd进入终端出现版本号即安装成功 2.镜像安装Hexo 进入npm镜像站 在终端输入 npm install -g cnpm --registry=https://registry.npmmirror.com cnpm install -g hexo-cli 效果如…