使用Python实现DES/3DES加密

13

在Python中,用于加密/解密的最佳模块/包是什么?能否提供一个使用DES / 3DES加密数据的Python示例。

2个回答

21

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加密库,它支持许多加密算法(包括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、Blowfish 等等)。

打印“加密:%r”%d ---> 为什么没有括号? - CaTx
@CaTx 是因为它是 Python 2.x。 - Hans
我遇到了一个编程问题... ModuleNotFoundError: 找不到名为 'pyDes' 的模块。 - Mike

7

你提供的 M2Crypto 链接已经失效。 - BlackVegetable

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接