diff options
author | Shengkai Sun <shengkai.sun01@gmail.com> | 2023-04-18 18:15:11 +0800 |
---|---|---|
committer | Sybren A. Stüvel <sybren@stuvel.eu> | 2023-04-23 15:38:33 +0200 |
commit | b94766f775aa3cdc541a66355cb00e439aab3e55 (patch) | |
tree | 6c69a9b5f2d94fe1ff177561a383f47d42d27a1f | |
parent | 5045b149ba255349730e1c7ad78c61700427c5da (diff) | |
download | rsa-git-b94766f775aa3cdc541a66355cb00e439aab3e55.tar.gz |
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
-rw-r--r-- | .gitignore | 1 | ||||
-rw-r--r-- | rsa/core.py | 2 | ||||
-rw-r--r-- | tests/test_integers.py | 28 |
3 files changed, 30 insertions, 1 deletions
@@ -18,3 +18,4 @@ __pycache__/ /build/ /doc/_build/ +.vscode/settings.json diff --git a/rsa/core.py b/rsa/core.py index 84ed3f8..4acfa3a 100644 --- a/rsa/core.py +++ b/rsa/core.py @@ -36,7 +36,7 @@ def encrypt_int(message: int, ekey: int, n: int) -> int: if message < 0: raise ValueError("Only non-negative numbers are supported") - if message > n: + if message >= n: raise OverflowError("The message %i is too long for n=%i" % (message, n)) return pow(message, ekey, n) diff --git a/tests/test_integers.py b/tests/test_integers.py index 659e85a..fa85cdf 100644 --- a/tests/test_integers.py +++ b/tests/test_integers.py @@ -46,3 +46,31 @@ class IntegerTest(unittest.TestCase): print("\tVerified: %d" % verified) self.assertEqual(message, verified) + + def test_extreme_values(self): + # message < 0 + message = -1 + print("\n\tMessage: %d" % message) + + with self.assertRaises(ValueError): + rsa.core.encrypt_int(message, self.pub.e, self.pub.n) + + # message == 0 + message = 0 + print("\n\tMessage: %d" % message) + + encrypted = rsa.core.encrypt_int(message, self.pub.e, self.pub.n) + print("\tEncrypted: %d" % encrypted) + + decrypted = rsa.core.decrypt_int(encrypted, self.priv.d, self.pub.n) + print("\tDecrypted: %d" % decrypted) + + self.assertEqual(message, decrypted) + + # message >= n + message = self.pub.n + print("\n\tMessage: %d" % message) + + with self.assertRaises(OverflowError): + rsa.core.encrypt_int(message, self.pub.e, self.pub.n) + |