1

我在 Python 中使用 M2Crypto 对使用 RSA 加密的硬件设备进行了工作测试。现在我需要测试一个使用 3DES 加密的类似设备。但我不知道如何使用 M2Crypto 进行三重 DES 加密。

我知道这张图表应该是可能的。但不幸的是,我发现的 M2Crypto 文档很粗略。(http://chandlerproject.org/ 上的主页似乎Chandler 一起消失了。)

我搜索了 3DES 和“OpenSSL API”,发现一些难以理解的 C 代码用于解密,这使得我看起来需要使用 M2Crypto.EVP.Cipher。但我还没有找到任何将其用于 DES 的示例。我发现的最接近的是这篇关于使用它进行 AES 加密的博客文章。看起来我只需要找出正确的论点M2Crypto.EVP.Cipher.__init__()。我会继续挖掘,但我认为值得发布这个问题。

4

2 回答 2

3

这里。以下 DES 密码有参考:'des_ede_ecb'、'des_ede_cbc'、'des_ede_cfb'、'des_ede_ofb'、'des_ede3_ecb'、'des_ede3_cbc'、'des_ede3_cfb'、'des_ede3_ofb'。

主页现在似乎在这里

于 2010-08-22T23:09:38.390 回答
0

以下代码对我有用:

with open(keyfile, 'rb') as f:
    key = f.read()
encrypt = 1
cipher = Cipher(alg='des_ede3_ecb', key=key, op=encrypt, iv='\0'*16)
ciphertext = cipher.update(plaintext)
ciphertext += cipher.final()

请注意,密钥文件是一个 24 字节(二进制)文件,其奇偶校验集设置为 DES 有时需要的。

另请注意,在使用“des_ede3_ecb”时,iv 参数(我相信)被忽略,但我无法通过None。)

于 2010-08-23T23:37:48.727 回答