ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

2021-06-08

2021-06-08 21:58:15  阅读:210  来源: 互联网

标签:gmpy2 temp 08 assert 2021 import print 06 dp


RSA2

题目

e = 65537
n = 248254007851526241177721526698901802985832766176221609612258877371620580060433101538328030305219918697643619814200930679612109885533801335348445023751670478437073055544724280684733298051599167660303645183146161497485358633681492129668802402065797789905550489547645118787266601929429724133167768465309665906113
dp = 905074498052346904643025132879518330691925174573054004621877253318682675055421970943552016695528560364834446303196939207056642927148093290374440210503657

c = 140423670976252696807533673586209400575664282100684119784203527124521188996403826597436883766041879067494280957410201958935737360380801845453829293997433414188838725751796261702622028587211560353362847191060306578510511380965162133472698713063592621028959167072781482562673683090590521214218071160287665180751

解题

已知e、n、dp、c,还是dp泄露,跟RSA1有点像,但又不太一样。

为了得到m,我们还需要求出来d。

根据已知条件,先算出p、q

from Crypto.Util.number import *
import gmpy2 

temp=dp*e
for i in range(1,e) :
    if (temp-1)%i==0:
        x=(temp-1)//i+1
        y=n%x
        if y==0:
            p=x
            break
q = n // p
assert isPrime(p)
assert isPrime(q)
phi = (q-1) * (p-1)
d = gmpy2.invert(e,phi)
print(d)

算出d之后就可以解密了:

m = pow(c,d,n)
m = long_to_bytes(m)
print(m)

答案

flag{wow_leaking_dp_breaks_rsa?_98924743502}

标签:gmpy2,temp,08,assert,2021,import,print,06,dp
来源: https://blog.csdn.net/m0_57291352/article/details/117716772

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有