diff --git a/IS/Lab/Lab7/Pallier.py b/IS/Lab/Lab7/Pallier.py index c233b23..303619d 100644 --- a/IS/Lab/Lab7/Pallier.py +++ b/IS/Lab/Lab7/Pallier.py @@ -1,13 +1,11 @@ import random -from math import gcd -from sympy import isprime, lcm +from math import gcd, lcm +from sympy import isprime, randprime def generate_prime(bits=512): - while True: - num = random.getrandbits(bits) - if isprime(num): - return num + # Use sympy's randprime for efficiency + return randprime(2 ** (bits - 1), 2**bits) def generate_keypair(bits=512): @@ -23,10 +21,11 @@ def generate_keypair(bits=512): def L(x): return (x - 1) // n - mu = pow(L(pow(g, lambda_n, n_squared)), -1, n) + # Convert to int to avoid sympy Integer type issues + mu = pow(int(L(pow(g, int(lambda_n), n_squared))), -1, n) public_key = (n, g) - private_key = (lambda_n, mu) + private_key = (int(lambda_n), mu) return public_key, private_key