其他分享
首页 > 其他分享> > 存档一些未解的RSA

存档一些未解的RSA

作者:互联网

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