Initial commit
This commit is contained in:
@@ -0,0 +1,19 @@
|
||||
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)
|
||||
Reference in New Issue
Block a user