Skip to content
This repository was archived by the owner on Apr 20, 2025. It is now read-only.

Commit b94766f

Browse files
Misaka-No-10032sybrenstuvel
authored andcommitted
modified: Fixed a bug in rsa/core.py where the message should not be equals to the modulus
modified: Added test cases in tests/test_integers.py
1 parent 5045b14 commit b94766f

File tree

3 files changed

+30
-1
lines changed

3 files changed

+30
-1
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,4 @@ __pycache__/
1818

1919
/build/
2020
/doc/_build/
21+
.vscode/settings.json

rsa/core.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ def encrypt_int(message: int, ekey: int, n: int) -> int:
3636
if message < 0:
3737
raise ValueError("Only non-negative numbers are supported")
3838

39-
if message > n:
39+
if message >= n:
4040
raise OverflowError("The message %i is too long for n=%i" % (message, n))
4141

4242
return pow(message, ekey, n)

tests/test_integers.py

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,3 +46,31 @@ def test_sign_verify(self):
4646
print("\tVerified: %d" % verified)
4747

4848
self.assertEqual(message, verified)
49+
50+
def test_extreme_values(self):
51+
# message < 0
52+
message = -1
53+
print("\n\tMessage: %d" % message)
54+
55+
with self.assertRaises(ValueError):
56+
rsa.core.encrypt_int(message, self.pub.e, self.pub.n)
57+
58+
# message == 0
59+
message = 0
60+
print("\n\tMessage: %d" % message)
61+
62+
encrypted = rsa.core.encrypt_int(message, self.pub.e, self.pub.n)
63+
print("\tEncrypted: %d" % encrypted)
64+
65+
decrypted = rsa.core.decrypt_int(encrypted, self.priv.d, self.pub.n)
66+
print("\tDecrypted: %d" % decrypted)
67+
68+
self.assertEqual(message, decrypted)
69+
70+
# message >= n
71+
message = self.pub.n
72+
print("\n\tMessage: %d" % message)
73+
74+
with self.assertRaises(OverflowError):
75+
rsa.core.encrypt_int(message, self.pub.e, self.pub.n)
76+

0 commit comments

Comments
 (0)