ICode9

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

存档一些未解的RSA

2021-11-03 01:31:28  阅读:200  来源: 互联网

标签:prime rp rq 存档 RSA expo delta import 未解


1

from Crypto.Util.number import *
import random
rp = getPrime(int(22))
rq = getPrime(int(22))

expo = 2
def gen_prime(expo, r):
    while True:
        temp = random.getrandbits(512)
        prime = temp ** expo + r
        if isPrime(prime) and prime.bit_length() == 1024 and r < 2*temp**(expo//2):
            return prime

p = gen_prime(expo, rp)
q = gen_prime(expo, rq)
N = p * q
e = 65537

print(2**512)
p = 2**512
print(int(22))
"""
rp = 2761901
rq = 3521341
N = 8173429571237662356174233212574237281236998322542031650592594000891217669517413120500967497159244942348919067278693976689821859501087450019648230509709850347452324917093790301921127612493160209440437151319899297108532561169489425336409144924829832598843960688066486385145035210137687912003224734049803067433867707061772684826069508323572784775026848012706590657701751696891266472810511785676911545335741922767714438974823662929237575578695019172902410190335369556100506389008308623507470571466550018151809818826697222772408182010868119265594161444787149236612545056615010167331621709873102985291078241888304225882829
c = 6554138766974173272710144648183504398065698784167774773317718988434462828799287233285624061164660513258962823179912342327844671108808332129449156312310273679584167590425419252200727139421539687306609425624304225214120321941886252869436713943300790736667897627797614987266193848818485307859417445578102219563876798765702350608858252252678318853952926930729175117874307966329617938829619268459168088842722041471147579581400725208411779803070123511693579859690831873136147414357525140485188770396726712964444601480021916230402939070817964700309571887644154422478649510166353979404316364679398748317299695684951369875031
"""

exp

from Crypto.Util.number import *
import random
import gmpy2
from z3 import *
from tqdm import tqdm

rp = 2761901
rq = 3521341
N = 8173429571237662356174233212574237281236998322542031650592594000891217669517413120500967497159244942348919067278693976689821859501087450019648230509709850347452324917093790301921127612493160209440437151319899297108532561169489425336409144924829832598843960688066486385145035210137687912003224734049803067433867707061772684826069508323572784775026848012706590657701751696891266472810511785676911545335741922767714438974823662929237575578695019172902410190335369556100506389008308623507470571466550018151809818826697222772408182010868119265594161444787149236612545056615010167331621709873102985291078241888304225882829
C = 6554138766974173272710144648183504398065698784167774773317718988434462828799287233285624061164660513258962823179912342327844671108808332129449156312310273679584167590425419252200727139421539687306609425624304225214120321941886252869436713943300790736667897627797614987266193848818485307859417445578102219563876798765702350608858252252678318853952926930729175117874307966329617938829619268459168088842722041471147579581400725208411779803070123511693579859690831873136147414357525140485188770396726712964444601480021916230402939070817964700309571887644154422478649510166353979404316364679398748317299695684951369875031
e = 65537
x = N - (rp * rq)
tptq = int(gmpy2.iroot(N, 2)[0])

for i in (range(rp, rq + 1)):
    alpha = (tptq - i) ** 2
    beta = N - alpha - (rp * rq)
    a = rq
    b = -beta
    c = alpha * rp
    delta = (b ** 2) - (4 * a * c)
    if delta >= 0:
        sq_delta = gmpy2.iroot(delta, 2)
        if sq_delta[1]:
            fenz = sq_delta[0] - b
            if fenz % (2 * a) == 0:
                x = fenz // (2 * a)
                y = alpha // x
                if (x + rp) * (y + rq) != N:
                    x, y = y, x
                p = x + rp
                q = y + rq
                assert p * q == N
                phi = (p - 1) * (q - 1)
                d = inverse(e, phi)
                m = pow(C, d, N)
                print(long_to_bytes(m))
                exit()

标签:prime,rp,rq,存档,RSA,expo,delta,import,未解
来源: https://www.cnblogs.com/wgf4242/p/15501973.html

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

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

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

ICode9版权所有