【问题标题】:How to 3DES encrypt in Python using the M2Crypto wrapper?如何使用 M2Crypto 包装器在 Python 中进行 3DES 加密?
【发布时间】:2010-08-22 14:07:38
【问题描述】:

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

我知道this chart 应该可以。但不幸的是,我发现the documentation of M2Crypto 是粗略的。 (http://chandlerproject.org/ 上的 homepage 似乎和钱德勒一起消失了。)

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

【问题讨论】:

    标签: python encryption cryptography m2crypto 3des


    【解决方案1】:

    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

    【讨论】:

    • 我没想过要看测试。谢谢!
    【解决方案2】:

    以下代码对我有用:

    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。)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-09-06
      • 1970-01-01
      • 1970-01-01
      • 2017-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多