m2crypto aes-256-cbc не работает с закодированными файлами openssl - PullRequest
1 голос
/ 14 мая 2010
$ echo 'this is text' > text.1
$ openssl enc -aes-256-cbc -a -k "thisisapassword" -in text.1 -out text.enc
$ openssl enc -d -aes-256-cbc -a -k "thisisapassword" -in text.enc -out text.2
$ cat text.2
this is text

Я могу сделать это с openssl. Теперь, как мне сделать то же самое в m2crypto. В документации этого нет. Я посмотрел на тестовые примеры SNV, но ничего не вышло. Я нашел один пример, http://passingcuriosity.com/2009/aes-encryption-in-python-with-m2crypto/ (изменен на aes_256_cbc), и он зашифрует / расшифрует свои собственные строки, но он не может расшифровать все, что сделано с помощью openssl, и все, что он шифрует, не расшифровывается с помощью openssl.

Мне нужно иметь возможность использовать enc / dec с aes-256-cbc, так как многие файлы уже зашифрованы с этим, и у нас есть много других систем, которые также отлично справляются с выводом aes-256-cbc.

Мы используем только парольные фразы, без IV. Так что установка IV на \ 0 * 16 имеет смысл, но я не уверен, что это тоже часть проблемы.

У кого-нибудь есть рабочие образцы AES 256, совместимые с m2crypto?

Я также попробую несколько дополнительных библиотек и посмотрю, работают ли они лучше.

1 Ответ

1 голос
/ 14 мая 2010

Часть проблемы заключается в том, что файл, созданный openssl, содержит 16 байтов предварительно добавленной информации о соли Salted__xxxxxxxx. Таким образом, они должны быть извлечены в первую очередь, а затем может произойти дешифрование. Следующая проблема - взять оригинальный пароль, посыпать солью, взять из него сгенерированный ключ и создать пару ключ / iv для расшифровки. Мне удалось сделать первый раунд, когда они вводят хэш, но, будучи 256-битным, для успешного прохождения требуется два раунда. Проблема в создании второго раунда хэша.

Следует также отметить, что мы заблокированы в Python 2.4, поэтому некоторые из представленных будущих подпрограмм с ключами не будут работать для нас.

...