Python M2Crypto.EVP.Cipher не работает с зашифрованными данными C ++ - PullRequest
0 голосов
/ 18 ноября 2011

У меня есть некоторые данные, которые были зашифрованы с использованием OpenSSL в C ++ с использованием aes_256_cbc, и мне нужно расшифровать их в Python.Я подумал, что используя M2Crypto, наличие оболочки для OpenSSL должно упростить эту задачу, но я не получаю те же данные.

Я прочитал test_AES код и это не такТ помогло.Я получаю данные, это просто неправильные данные.

c = Cipher(alg='aes_256_cbc', key=binaryKey, iv=iv, op=0, d='sha256', i=5, salt=knownSalt, padding=0)
v = c.update(binaryDataToDecrypt)
v += c.final()

На этом этапе, afaik, v должны быть моими данными, а это не так ... Я нашел еще один Q здесьна SO , где было упомянуто, что первые 16 байтов данных для дешифрования являются солью, поэтому я также безуспешно попробовал следующее:

c = Cipher(alg='aes_256_cbc', key=binaryKey, iv=iv, op=0, d='sha256', i=5, salt=binaryDataToDecrypt[0:16], padding=0)
v = c.update(binaryDataToDecrypt[16:])
v += c.final()

1 Ответ

0 голосов
/ 07 января 2012

Таким образом, вопрос, который я связал с упоминанием обрезания первых 16 байтов, возможно, был нацелен на другую реализацию. Оказывается, мне пришлось вырезать последние 16 байтов. Вы также должны убедиться, что вы вырезаете эти 16 байтов после того, как преобразовали данные в двоичный формат, чтобы они действительно составляли 16 байтов

Кроме того, как упоминалось в комментариях Пауло, AES не использует соль, поэтому для параметра следует оставить значение по умолчанию.

...