Initial commit
This commit is contained in:
@@ -0,0 +1,47 @@
|
||||
import pytest
|
||||
from core.prime_number import PrimeNumber
|
||||
from core.public_key import PublicKey
|
||||
|
||||
|
||||
def test_encrypt_basic_cycle():
|
||||
"""Шифрование совпадает с pow(m, e, n)"""
|
||||
e = PrimeNumber.from_value(3)
|
||||
n = 11 # n может быть простым или составным числом
|
||||
pub = PublicKey(e, n)
|
||||
|
||||
for m in range(1, 10):
|
||||
expected = pow(m, e.value, n)
|
||||
assert pub.encrypt(m) == expected
|
||||
|
||||
|
||||
def test_encrypt_with_composite_n():
|
||||
"""n = p1 * p2 должно работать корректно"""
|
||||
p1 = PrimeNumber.from_value(5)
|
||||
p2 = PrimeNumber.from_value(11)
|
||||
n = p1.value * p2.value
|
||||
e = PrimeNumber.from_value(3)
|
||||
|
||||
pub = PublicKey(e, n)
|
||||
m = 7
|
||||
expected = pow(m, e.value, n)
|
||||
assert pub.encrypt(m) == expected
|
||||
|
||||
|
||||
def test_encrypt_rejects_negative():
|
||||
"""Отрицательные сообщения запрещены"""
|
||||
e = PrimeNumber.from_value(3)
|
||||
n = 11
|
||||
pub = PublicKey(e, n)
|
||||
|
||||
with pytest.raises(ValueError):
|
||||
pub.encrypt(-1)
|
||||
|
||||
|
||||
def test_encrypt_rejects_non_integer():
|
||||
"""Сообщение должно быть int"""
|
||||
e = PrimeNumber.from_value(3)
|
||||
n = 11
|
||||
pub = PublicKey(e, n)
|
||||
|
||||
with pytest.raises(ValueError):
|
||||
pub.encrypt(3.14)
|
||||
Reference in New Issue
Block a user