IS Lab Pallier Fix

This commit is contained in:
sherlock 2025-10-07 10:02:52 +05:30
parent 23af6d5b1d
commit 672cb43d49

View file

@ -1,13 +1,11 @@
import random import random
from math import gcd from math import gcd, lcm
from sympy import isprime, lcm from sympy import isprime, randprime
def generate_prime(bits=512): def generate_prime(bits=512):
while True: # Use sympy's randprime for efficiency
num = random.getrandbits(bits) return randprime(2 ** (bits - 1), 2**bits)
if isprime(num):
return num
def generate_keypair(bits=512): def generate_keypair(bits=512):
@ -23,10 +21,11 @@ def generate_keypair(bits=512):
def L(x): def L(x):
return (x - 1) // n 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) public_key = (n, g)
private_key = (lambda_n, mu) private_key = (int(lambda_n), mu)
return public_key, private_key return public_key, private_key