У меня есть данные, которые были зашифрованы в PHP следующим образом:Расшифровать MCRYPT_RIJNDAEL_256 с векторами инициализации 32-байтных с PyCrypto
mcrypt_encrypt(MCRYPT_RIJNDAEL_256, SECRET, $data, MCRYPT_MODE_CBC, $iv)
Мне нужно, чтобы расшифровать эти данные в приложении Python 3. Я пытаюсь использовать PyCrypto, но я открыт для других библиотек. Я ожидаю, что следующие работы:
decryptor = AES.new(key, mode, IV=IV)
plain = decryptor.decrypt(ciphertext)
Мой вектор инициализации 32 байт, а следующее исключение:
ValueError: IV must be 16 bytes long
Как я могу установить PyCrypto использовать вектор инициализации 32 байт и 32 байт размер блока? В качестве альтернативы, есть ли другая библиотека, которую я могу использовать для дешифрования данных?
Вы не можете установить размер блока AES размером 32 байта, поскольку AES определен только для размера блока по 16 байтов. Вы должны найти Rijndael 256/256 (предполагая, что ваш ключ также имеет длину 32 байта) для python. –
Возможный дубликат [эквивалент Python PHP MCRYPT \ _RIJNDAEL \ _256 CBC] (http://stackoverflow.com/questions/8356689/python-equivalent-of-phps-mcrypt-rijndael-256-cbc). Всегда интересно видеть свои собственные ответы в поиске Google. –
Спасибо. Это похоже на реализацию блочного шифрования, но не на режим шифрования CBC. Есть ли реализация CBC, которую я могу использовать с моими 32-байтными векторами инициализации? – gavinmh