【问题标题】:using DES/3DES with python使用 DES/3DES 和 python
【发布时间】:2011-01-26 23:25:51
【问题描述】:

在 python 中使用 des /3des 进行加密/解密的最佳模块 /package 是什么。 有人可以提供在 python 上使用 des/3des 加密数据的示例吗?

【问题讨论】:

    标签: python cryptography 3des


    【解决方案1】:

    您可以为OpenSSL 使用M2Crypto Python 包装器。它的优点是速度快(与 OpenSSL 一样快),但缺点是文档有限。

    这是从my answer"How to 3DES encrypt in Python using the M2Crypto wrapper? 的示例”

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

    【讨论】:

    • 您拥有的 M2Crypto 链接已失效。
    【解决方案2】:

    pyDes 可用于 DES 和 3DES。示例用法:

    from pyDes import *
    
    data = "Please encrypt my data"
    k = des("DESCRYPT", CBC, "\0\0\0\0\0\0\0\0", pad=None, padmode=PAD_PKCS5)
    d = k.encrypt(data)
    print "Encrypted: %r" % d
    print "Decrypted: %r" % k.decrypt(d)
    assert k.decrypt(d, padmode=PAD_PKCS5) == data
    

    另一种选择是Chillkat Python Encryption Library,它支持许多加密算法(包括 DES 和 3DES),但它不是免费的。示例用法:

    crypt.put_CryptAlgorithm("des")
    crypt.put_CipherMode("cbc")
    crypt.put_KeyLength(64)
    crypt.put_PaddingScheme(0)
    crypt.put_EncodingMode("hex")
    ivHex = "0001020304050607"
    crypt.SetEncodedIV(ivHex,"hex")
    keyHex = "0001020304050607"
    crypt.SetEncodedKey(keyHex,"hex")
    encStr = crypt.encryptStringENC("The quick brown fox jumps over the lazy dog.")
    print encStr
    decStr = crypt.decryptStringENC(encStr)
    print decStr
    

    无论如何,我希望您知道,如今 DES 和 3DES 都不是特别安全的,有许多更好的替代方案(如果您想坚持标准,首先是 AES,或者 Twofish 、河豚等……)

    【讨论】:

    • print "Encrypted: %r" % d ---> 为什么没有括号?
    • @CaTx 因为它的 Python 2.x
    • 我收到... ModuleNotFoundError: No module named 'pyDes'
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-29
    • 2013-07-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多