p = 9648423029010515676590551740010426534945737639235739800643989352039852507298491399561035009163427050370107570733633350911691280297777160200625281665378483 q = 11874843837980297032092405848653656852760910154543380907650040190704283358909208578251063047732443992230647903887510065547947313543299303261986053486569407 e = 65537 c = 83208298995174604174773590298203639360540024871256126892889661345742403314929861939100492666605647316646576486526217457006376842280869728581726746401583705899941768214138742259689334840735633553053887641847651173776251820293087212885670180367406807406765923638973161375817392737747832762751690104423869019034
e = 65537 n = 248254007851526241177721526698901802985832766176221609612258877371620580060433101538328030305219918697643619814200930679612109885533801335348445023751670478437073055544724280684733298051599167660303645183146161497485358633681492129668802402065797789905550489547645118787266601929429724133167768465309665906113 dp = 905074498052346904643025132879518330691925174573054004621877253318682675055421970943552016695528560364834446303196939207056642927148093290374440210503657 c = 140423670976252696807533673586209400575664282100684119784203527124521188996403826597436883766041879067494280957410201958935737360380801845453829293997433414188838725751796261702622028587211560353362847191060306578510511380965162133472698713063592621028959167072781482562673683090590521214218071160287665180751
e = 65537 n = 248254007851526241177721526698901802985832766176221609612258877371620580060433101538328030305219918697643619814200930679612109885533801335348445023751670478437073055544724280684733298051599167660303645183146161497485358633681492129668802402065797789905550489547645118787266601929429724133167768465309665906113 dp = 905074498052346904643025132879518330691925174573054004621877253318682675055421970943552016695528560364834446303196939207056642927148093290374440210503657 c = 140423670976252696807533673586209400575664282100684119784203527124521188996403826597436883766041879067494280957410201958935737360380801845453829293997433414188838725751796261702622028587211560353362847191060306578510511380965162133472698713063592621028959167072781482562673683090590521214218071160287665180751
m= 3670434958110785066911905751469631231338751225710158680692616521935747246580688484040488309932916523151997 0x666c61677b776f775f6c65616b696e675f64705f627265616b735f7273613f5f39383932343734333530327 d b'flag{wow_leaking_dp_breaks_rsa?_98924743502}'
key = rsa.PrivateKey(n,e,d,q,p) with open(r"C:\Users\Lenovo\Desktop\0eaf8d6c-3fe5-4549-9e81-94ac42535e7b (1)\flag.enc","rb") as f: f = f.read() print(rsa.decrypt(f,key))
输出结果
1
b'flag{decrypt_256}
总结
1、with open("C:\Users\Lenovo\Desktop\0eaf8d6c-3fe5-4549-9e81-94ac42535e7b (1)\flag.enc","rb") as f: 行不通,就在open(“加个r
#题目.txt RSA roll!roll!roll! Only number and a-z (don't use editor which MS provide)
解题
1 2 3 4 5 6 7 8 9 10 11 12 13 14
import gmpy2
p=18443 q=49891 n=920139713 e=19 d = gmpy2.invert(e,(p-1)*(q-1)) flag = [] with open(r"C:\Users\Lenovo\Desktop\02c01a13-3a86-47de-8648-f03328a5e5d8 (1)\RsaRoll\data.txt") as f: f.readline() f.readline() for i in f: flag.append(chr(pow(int(i),d,n))) print("".join(flag))
输出
1
flag{13212je2ue28fy71w8u87y31r78eu1e2}
总结
1、 f.readline() 用于从文件读取整行,包括 “\n” 字符
已知n,c,e,且e=3,求m
题目 Dangerous RSA如下
1 2 3 4
#n: 0x52d483c27cd806550fbe0e37a61af2e7cf5e0efb723dfc81174c918a27627779b21fa3c851e9e94188eaee3d5cd6f752406a43fbecb53e80836ff1e185d3ccd7782ea846c2e91a7b0808986666e0bdadbfb7bdd65670a589a4d2478e9adcafe97c6ee23614bcb2ecc23580f4d2e3cc1ecfec25c50da4bc754dde6c8bfd8d1fc16956c74d8e9196046a01dc9f3024e11461c294f29d7421140732fedacac97b8fe50999117d27943c953f18c4ff4f8c258d839764078d4b6ef6e8591e0ff5563b31a39e6374d0d41c8c46921c25e5904a817ef8e39e5c9b71225a83269693e0b7e3218fc5e5a1e8412ba16e588b3d6ac536dce39fcdfce81eec79979ea6872793L #e: 0x3 #c:0x10652cdfaa6b63f6d7bd1109da08181e500e5643f5b240a9024bfa84d5f2cac9310562978347bb232d63e7289283871efab83d84ff5a7b64a94a79d34cfbd4ef121723ba1f663e514f83f6f01492b4e13e1bb4296d96ea5a353d3bf2edd2f449c03c4a3e995237985a596908adc741f32365 so,how to get the message?
思路
e=3,属于低加密指数攻击,存在以下两种情况
总的关系式:c=m^3^ mod n,c=kn+m^3^
1、如果明文m较小,导致m^3^<n,所以c=m^3^,所以m=c开3次方
2、如果明文m较大,导致m^3^>n,满足c=kn+m^3^,所以m=(c-kn)开3次方
解题
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
import gmpy2 import libnum n = 0x52d483c27cd806550fbe0e37a61af2e7cf5e0efb723dfc81174c918a27627779b21fa3c851e9e94188eaee3d5cd6f752406a43fbecb53e80836ff1e185d3ccd7782ea846c2e91a7b0808986666e0bdadbfb7bdd65670a589a4d2478e9adcafe97c6ee23614bcb2ecc23580f4d2e3cc1ecfec25c50da4bc754dde6c8bfd8d1fc16956c74d8e9196046a01dc9f3024e11461c294f29d7421140732fedacac97b8fe50999117d27943c953f18c4ff4f8c258d839764078d4b6ef6e8591e0ff5563b31a39e6374d0d41c8c46921c25e5904a817ef8e39e5c9b71225a83269693e0b7e3218fc5e5a1e8412ba16e588b3d6ac536dce39fcdfce81eec79979ea6872793 c = 0x10652cdfaa6b63f6d7bd1109da08181e500e5643f5b240a9024bfa84d5f2cac9310562978347bb232d63e7289283871efab83d84ff5a7b64a94a79d34cfbd4ef121723ba1f663e514f83f6f01492b4e13e1bb4296d96ea5a353d3bf2edd2f449c03c4a3e995237985a596908adc741f32365 e=3
k = 0 while 1: if(gmpy2.iroot(c+k*n,3)[1]==1): print(gmpy2.iroot(c+k*n,3)) break i=i+1 hex_m=hex(13040004482819713819817340524563023159919305047824600478799740488797710355579494486728991357) print(hex_m) import binascii mingwen=binascii.unhexlify('666c61677b32356466386361663030366565356462393464343831343463333362326333627d')