使用DES / 3DES与python

时间:2010-03-12 19:33:12

标签: python cryptography 3des

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

2 个答案:

答案 0 :(得分:19)

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 ,河豚等...)

答案 1 :(得分:7)

您可以将M2Crypto Python包装器用于OpenSSL。它具有快速(与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()