对于一些敏感数据,我决定将其以 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 有多种选项的组合来完成这项工作......
最佳答案
我认为问题可能在于您没有为 CBC 模式提供 IV,如果没有 IV,mCrypt 和 PyCrypto 可能会通过使用不同的默认 IV 来不同地处理它。我已经看到一些实现(例如 phpseclib)默认使用 IV 和 16 个空字节。 mcrypt 可能不会这样做。
关于python - 使用 PyCrypto 进行 AES 加密,使用 mcrypt 进行解密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2511126/