Я реализую DES3 в Python, используя библиотеку Crypto.Я проводил некоторый тест, когда наткнулся на следующую проблему:
Если простой текст, который я хочу зашифровать, содержит странные символы, например ударения, не удается.
Например, мой код работает нормально, когда я пытаюсь зашифровать следующее слово:
Текст для шифрования (кратно 8 в длину): "Hello Jose "
Однако произойдет сбой, если я попытаюсь зашифровать тот же текст, но содержащий акцент: зашифрованный текст (кратный длине 8) = "Hello José "
Я получаю сообщение об ошибке «ValueError: Input strings»должно быть кратно 8 ”.
Если я проверю длину слова, оно будет кратно 8.
plaintext="Hello Jose "
print(" Plain text:" + plaintext)
print(" Plain Text length:" + str(len(plaintext)))
Результат: Обычный Длина текста: 16
Найдите следующий сокращенный пример моего кода:
from Crypto.Cipher import DES3
import binascii
import base64
plaintext="Hello Jose "
print(" Plain text:" + plaintext)
print(" Plain Text length:" + str(len(plaintext)))
#### ENCRYPTION
key ='173JKL3D93A9CNI1G6NP9A14'
key=bytes(key, 'utf-8')
plaintext_bytes=bytes(plaintext, 'utf-8')
print(" Plain Text length:" + str(len(plaintext_bytes)))
cipher_encrypt=DES3.new(key)
encrypted_text=cipher_encrypt.encrypt(plaintext_bytes)
print( " Encrypted word:" + str(encrypted_text))
#### DECRYPTION
cipher_encrypt=DES3.new(key)
decrypted_text=cipher_encrypt.decrypt(encrypted_text)
print(" Decripted text:" + str(decrypted_text,'utf-8') + "\n")
Может кто-нибудь помочь мне понять, почему он работает неправильно?