Files
labs-information-security/lab2-the-RSA-algorithm/app/tests/test_public_key.py
T
2026-07-12 14:06:45 +04:00

48 lines
1.3 KiB
Python

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)