python - 使用 PyCrypto 进行 AES 加密,使用 mcrypt 进行解密

标签 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 有多种选项的组合来完成这项工作......

最佳答案

我认为问题可能在于您没有为 CBC 模式提供 IV,如果没有 IV,mCrypt 和 PyCrypto 可能会通过使用不同的默认 IV 来不同地处理它。我已经看到一些实现(例如 phpseclib)默认使用 IV 和 16 个空字节。 mcrypt 可能不会这样做。

关于python - 使用 PyCrypto 进行 AES 加密,使用 mcrypt 进行解密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2511126/

相关文章:

python - 如何使用 pytest-mock 或 magicmock 模拟导入的对象

python - 用于存储嵌套框的数据结构?

python - 在trimap生成中几乎不需要Alpha mask

java - 为什么AES 128加密会扩展数据?

php - 通过 SSL 交换信息时是否需要加密数据?

algorithm - C# 和 ColdFusion AES 加密不匹配

java - Tomcat 解密 aes 与 Java 主应用程序不同

javascript - CryptoJS javascript AES-128,欧洲央行加密/解密

java - 正在寻找用于解密使用 openssl -aes-256-cbc -a -salt 命令加密的消息的 Java 实现?

python - 动态添加类成员使用字符串命名