如何使用M2Crypto包装器在Python中加密3DES?

时间:2010-08-22 14:07:39

标签: python encryption cryptography m2crypto 3des

我使用M2Crypto在Python中对使用RSA加密的硬件设备进行了测试。现在我需要测试使用3DES加密的类似设备。但我无法弄清楚如何使用M2Crypto进行三重DES加密。

我知道应该可以从this chart开始。但不幸的是the documentation of M2Crypto我发现它是粗略的。 (homepage http://chandlerproject.org/似乎与Chandler一起消失了。)

我搜索了3DES和“OpenSSL API”并发现了一些很难解密的C代码,这使得我看起来需要使用M2Crypto.EVP.Cipher。但是我没有找到任何将它用于DES的例子。我发现的最接近的是this blog post on using it for AES encryption。看起来我只需要找出M2Crypto.EVP.Cipher.__init__()的正确参数。我会继续挖掘,但我认为值得发布这个问题。

2 个答案:

答案 0 :(得分:3)

here。以下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'。

主页现在似乎是here

答案 1 :(得分: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。)