Я пытаюсь выяснить, почему мой клиент Python и сервер Ruby не согласны с тем, как шифровать данные. Единственное различие, которое я вижу в коде Ruby и моем коде, заключается в том, что они не указывают вектор инициализации, поэтому он возвращается к умолчанию по умолчанию для всех \x0
Когда я пытаюсь создать экземпляр PyCrypto без iv, он дает мне ошибку. Вот пример:
from Crypto.Cipher import AES
test = "Very, very confidential data"
key = b'Thirty Two Byte key, made Beef y'
gryp = AES.new(key, AES.MODE_CBC)
(Этот пример является, по сути, примером кода из документов PyCrypto без указания IV). Документы говорят, что w/r/t IV "Это необязательно, а когда нет, ему будет присвоено значение по умолчанию для всех нулей". Однако я получаю ошибку "ValueError: IV должен иметь длину 16 байтов".
Поэтому я мог бы указать IV, это не проблема, но я пытаюсь понять, что если он думает, что не может использовать значение по умолчанию, если что-то не так с тем, как я использую библиотеку.