使用PyCrypto进行AES加密并使用mcrypt进行解密

时间:2010-03-24 20:25:05

标签: python encryption aes mcrypt pycrypto

对于某些敏感数据,我决定将其存储在光盘上进行AES加密。我使用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 个答案:

答案 0 :(得分:1)

我认为问题可能在于你没有为CBC模式提供IV而没有IV可能mCrypt和PyCrypto通过使用不同的默认IV来区别对待它。我已经看到一些实现(例如phpseclib)使用和默认情况下16个空字节的IV。 mcrypt可能不这样做。

答案 1 :(得分:-1)

为什么没有PyCrypto能够恢复很重要?您可以使用旧操作系统和旧版本的PyCrypto启动虚拟机,导出数据,并使用不同的算法和实现重新加密。