AES-шифрование с помощью PyCrypto и дешифрование с помощью mcrypt - PullRequest
3 голосов
/ 24 марта 2010

Для некоторых конфиденциальных данных я решил сохранить их в зашифрованном виде на диске. Я реализовал шифрование с использованием PyCrypto .

Кроме того, данные важны, и сохраненные зашифрованные данные будут моей единственной копией (за исключением резервных копий), поэтому я искал некоторые способы получения данных без использования PyCrypto, чтобы иметь запасной вариант, учитывая возможность того, что PyCrypto больше недоступен для меня (по какой-либо причине).

Я думал, что mcrypt может быть вариантом.

Это мой тестовый пример для написания зашифрованного текста:

import Crypto.Cipher.AES
import sys

pwd  = 'qwertzuiopasdfgh'
mode = Crypto.Cipher.AES.MODE_CBC
aes  = Crypto.Cipher.AES.new( pwd, mode )
text = 'asdfghjklyxcvbnm'
sys.stdout.write( aes.encrypt( text ) )

Я перенаправил вывод в файл out.nc и попытался расшифровать с помощью

mcrypt -d -b -k qwertzuiopasdfgh -a rijndael-128 -m CBC out.nc

но результирующий файл out имеет нулевой размер в байтах, к сожалению.

Я надеюсь, что в mcrypt есть несколько вариантов, чтобы сделать эту работу ...

Ответы [ 2 ]

1 голос
/ 09 декабря 2011

Я думаю, что проблема может заключаться в том, что вы не предоставляете IV для режима CBC и без IV, может быть, mCrypt и PyCrypto обрабатывают его по-разному, используя разные IV по умолчанию. Я видел, как некоторые реализации (например, phpseclib) используют IV из 16 нулевых байтов по умолчанию. mcrypt может этого не делать.

0 голосов
/ 25 марта 2010

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

...