我使用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__()
的正确参数。我会继续挖掘,但我认为值得发布这个问题。
答案 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
。)