您好,欢迎来到叨叨游戏网。
搜索
您的当前位置:首页buuctf RSA2

buuctf RSA2

来源:叨叨游戏网

import gmpy2 as gp

e = 65537
n = 248254007851526241177721526690180298583276617622160961225887737162058006043310153832803030521991869736198142009306796121098855338013353484450237516704784370730555447242806847332980515991676603035183146161497485358633681492129668802402065797790555045475118787266601929429724133167768465309665906113
dp = 905074498052346904302513287951833069192517457305400462187725331868267505542197094355201669552856038344463031969392070562927148093290374440210503657

c = 140423670976252696807533673586209400575628210068411978420352712452110382659743688376604187906749428095741020195357373603808018454538292939974334141888387257517962617026220285872115603533628471910603065785105113809651621334726987130635926210259167072781482562673683090590521214218071160287665180751

for i in range(1, e):  # 在范围(1,e)之间进行遍历
    if (dp * e - 1) % i == 0:
        if n % (((dp * e - 1) // i) + 1) == 0:  # 存在p,使得n能被p整除
            p = ((dp * e - 1) // i) + 1
            q = n // (((dp * e - 1) // i) + 1)
            phi = (q - 1) * (p - 1)  # 欧拉定理
            d = gp.invert(e, phi)  # 求模逆
            m = pow(c, d, n)  # 快速求幂取模运算

print(m)  # 10进制明文
print('------------')
print(hex(m)[2:])  # 16进制明文
print('------------')
print(bytes.fromhex(hex(m)[2:]))  # 16进制转文本

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- gamedaodao.net 版权所有 湘ICP备2024080961号-6

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务