First commit
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
#!/usr/bin/env python3
|
||||
|
||||
import unittest
|
||||
from Cryptotools.Numbers.primeNumber import isPrimeNumber, _millerRabinTest, getPrimeNumber
|
||||
from math import sqrt, isqrt, ceil
|
||||
from sympy import sqrt as sq
|
||||
|
||||
def get_closest_prime(p):
|
||||
q = p + 1
|
||||
l = list()
|
||||
while True:
|
||||
if _millerRabinTest(q):
|
||||
l.append(q)
|
||||
if len(l) == 20:
|
||||
break
|
||||
q += 1
|
||||
return l
|
||||
|
||||
def test():
|
||||
while True:
|
||||
p = getPrimeNumber(64)
|
||||
b = sqrt(p)
|
||||
if b % 2 == 0.0:
|
||||
break
|
||||
print(p)
|
||||
|
||||
#test()
|
||||
#exit(1)
|
||||
p = 7901
|
||||
q = 7817
|
||||
#p = getPrimeNumber(64)
|
||||
#q = get_closest_prime(p)[1]
|
||||
p = 7943202761666983 # Works
|
||||
q = 7943202761667119
|
||||
#p = 314159200000000028138418196395985880850000485810513
|
||||
#q = 314159200000000028138415196395985880850000485810479
|
||||
print(f"p = {p}")
|
||||
print(f"q = {q}")
|
||||
n = p * q
|
||||
print(f"n = {n}")
|
||||
|
||||
a = ceil(sqrt(n))
|
||||
#print(a)
|
||||
#print(sqrt(n))
|
||||
#print(sqrt(n) < n) # True
|
||||
#print(a * a)
|
||||
#print(a * a < n)
|
||||
#print()
|
||||
#a = isqrt(n) + 1
|
||||
iteration = 0
|
||||
while True:
|
||||
# b2 = (a ** 2) - n
|
||||
iteration += 1
|
||||
b2 = pow(a, 2) - n
|
||||
#b2 = ceil(a*a) - n
|
||||
# print(b2)
|
||||
sqb2 = ceil(sqrt(b2))
|
||||
# print(b2, isqrt(pow(b2, 2)))
|
||||
if b2 % 2 == 0.0:
|
||||
#if isqrt(pow(b2, 2)) == b2:
|
||||
b = isqrt(b2)
|
||||
break
|
||||
a = a + 1
|
||||
|
||||
print(f"Iteration: {iteration}")
|
||||
print(f"a = {a}")
|
||||
print(f"b2 = {b2}")
|
||||
print(f"b = {b}")
|
||||
p = int((a + b))
|
||||
q = int((a - b))
|
||||
print(p)
|
||||
print(q)
|
||||
#N = (a + b) * (a - b)
|
||||
N = p * q
|
||||
print(_millerRabinTest(p))
|
||||
print(_millerRabinTest(q))
|
||||
print(f"N = {N}")
|
||||
print(n == N)
|
||||
print()
|
||||
|
||||
Reference in New Issue
Block a user