Files
labs-information-security/lab1-Diffie-Hellman/app/core/participant.py
T
2026-07-12 14:06:45 +04:00

20 lines
747 B
Python

from secrets import randbelow
from .public_params import PublicParams
class Participant:
"""
Участник протокола (Алиса или Боб).
Держит свой секрет, публикует g^secret mod p,
умеет вычислять общий ключ.
"""
def __init__(self, params: PublicParams, secret: int | None = None):
self.params = params
self.secret = secret if secret is not None else (2 + randbelow(9998))
self.public_value = pow(self.params.generator,
self.secret, self.params.prime_modulus)
def compute_shared_key(self, other_public: int) -> int:
return pow(other_public, self.secret, self.params.prime_modulus)