Skip to content

Commit 547da39

Browse files
add check on prime num
1 parent c12d454 commit 547da39

File tree

1 file changed

+34
-2
lines changed

1 file changed

+34
-2
lines changed

rsa.py

+34-2
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,42 @@ def egcd(a, b):
1717
g, y, x = egcd(b % a, a)
1818
return (g, x - (b // a) * y, y)
1919

20+
def is_prime(n, k=5):
21+
if n < 2:
22+
return False
23+
if n in (2, 3):
24+
return True
25+
if n % 2 == 0:
26+
return False
27+
28+
# Записуємо n-1 як 2^s * d
29+
s, d = 0, n - 1
30+
while d % 2 == 0:
31+
s += 1
32+
d //= 2
33+
34+
for _ in range(k):
35+
a = secrets.randbelow(n - 3) + 2 # [2, n-2]
36+
x = pow(a, d, n)
37+
if x in (1, n - 1):
38+
continue
39+
for _ in range(s - 1):
40+
x = pow(x, 2, n)
41+
if x == n - 1:
42+
break
43+
else:
44+
return False
45+
return True
46+
47+
def generate_prime(bits=1024):
48+
while True:
49+
temp = secrets.randbits(bits)
50+
if is_prime(temp):
51+
return temp
52+
2053
def rsa_algo():
2154
"""RSA"""
22-
# треба чекати чи просте число
23-
num_1, num_2 = secrets.randbits(1024), secrets.randbits(1024)
55+
num_1, num_2 = generate_prime(), generate_prime()
2456
n = num_1*num_2
2557

2658
phi = (num_1-1)*(num_2-1)

0 commit comments

Comments
 (0)