1

我想将一些现有的 AES 代码从 M2Crypto 转换为等效的 pycrypto,但文档很薄,尤其是对于 M2Crypto。我已将相关代码简化为gist。主要问题是:

  • Pycrypto 要求输入长度为 16 的倍数,而 m2crypto 则不需要。
  • 即使输入长度是 16 的倍数,密文也不同。在尝试了 M2Crypto 密码参数之后,结果证明设置paddingkey_as_bytes错误使用 pycrypto 加密为相同的密文。所以我需要在纯python中padding=True进行模拟。key_as_bytes=True

任何帮助将非常感激。

编辑:已解决 - 要点已使用等效的 M2Crypto/pycrypto 代码和测试进行了更新,我将把它留在那里以防有人发现它在未来有用。

4

1 回答 1

2

您将必须实现 PKCS#7 填充/取消填充,这很简单,并且在 RSA 实验室的公开可用标准中指定,当然在 Wikipedia 上也有。另请参阅此答案:

使用 CBC 模式使用 PyCrypto 进行 AES 256 加密 - 有任何弱点吗?

请注意,PKCS#7 填充和 PKCS#5 填充是相同的,尽管后者正式仅用于 8 字节块密码(例如 DES/TDEA)。OpenSSL 默认使用 PKCS#7 填充。

于 2013-01-17T01:00:45.607 回答