Я использую pycryptodome
для шифрования и дешифрования сообщения. Ниже приведен код:
from Crypto.Cipher import AES
obj = AES.new('secret key 12345'.encode("utf-8"), AES.MODE_CBC, 'This is an IV456'.encode("utf-8"))
message = "The answer is no".encode("utf-8")
encryptedmsg = obj.encrypt(message)
obj2 = AES.new('secret key 12345'.encode("utf-8"), AES.MODE_CBC, 'This is an IV456'.encode("utf-8"))
t = obj2.decrypt(encryptedmsg)
print(t)
Теперь приведенный выше код отлично работает. Я заметил, что если вы зашифруете сообщение, длина которого больше или меньше ключа, вы получите ошибку Error 3 while encrypting in CBC mode
. Например, в этом случае секретным ключом является secret key 12345
, который имеет длину 16. Теперь, если мы создадим какое-либо сообщение длиной 16, оно будет работать нормально, но если длина сообщения 15 или 17, то будет выдана эта ошибка.
Почему такое поведение и как решить эту проблему.