Шифрование AES с помощью PyCrypto и дешифрование с помощью mcrypt.
-
22-09-2019 - |
Вопрос
Некоторые конфиденциальные данные я решил хранить на диске в зашифрованном виде AES.Я реализовал шифрование, используя ПиКрипто.
Более того, данные важны, и сохраненные зашифрованные данные будут моей единственной их копией (кроме резервных копий), поэтому я искал способы получения данных без использования 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, чтобы эта работа заработала…
Решение
Почему важно иметь возможность восстановления без PyCrypto?Вы можете просто запустить виртуальную машину со старой ОС и старой версией PyCrypto, экспортировать данные и повторно зашифровать их с использованием другого алгоритма и реализации.
Другие советы
Я думаю, что проблема может заключаться в том, что вы не предоставляете IV для режима CBC, а без IV, возможно, mCrypt и PyCrypto обрабатывают его по-разному, используя разные IV по умолчанию.Я видел, как в некоторых реализациях (например, phpseclib) по умолчанию используется IV из 16 нулевых байтов.mcrypt может этого не сделать.