2010-03-12 58 views
10

python中使用des/3des進行加密/解密的最佳模塊/軟件包是什麼? 有人可以提供一個例子,用python的des/3des加密數據。使用DES/3DES與python

回答

17

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 

一種替代方案是,它支持大量的加密算法(包括DES & 3DES)的Chillkat Python Encryption Library,但它是不自由。示例用法:

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被認爲paritcularly安全如今,有很多更好的選擇(AES擺在首位,如果你想堅持以標準或Twofish,Blowfish等...)

+0

>>>打印encStr \無 – Ska 2011-09-07 17:07:37

+0

打印 」加密的例子:%R「 %d --->爲什麼沒有括號 – CaTx 2017-10-05 02:48:24

+0

不能CONCAT字節爲int ----> python 3中的錯誤??? – Mehrdad 2017-12-19 07:36:10

6

您可以使用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() 
+0

您擁有的M2Crypto鏈接已經死亡。 – BlackVegetable 2014-10-25 01:05:41