2010-03-12 31 views
10

mô-đun/gói tốt nhất trong python để sử dụng des/3des để mã hóa/giải mã là gì. ai đó có thể cung cấp ví dụ để mã hóa dữ liệu với des/3des trên python.sử dụng DES/3DES với python

Trả lời

17

pyDes có thể được sử dụng cho cả DES và 3DES. sử dụng mẫu:

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 

Một thay thế là Chillkat Python Encryption Library mà hỗ trợ nhiều thuật toán mã hóa (bao gồm DES & 3DES), nhưng nó là không miễn phí. sử dụng mẫu:

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 

Dù sao, tôi hy vọng rằng bạn nhận thức được rằng không phải DES hay 3DES được coi paritcularly an toàn ngày nay, có nhiều lựa chọn thay thế tốt hơn (AES ở nơi đầu tiên nếu bạn muốn gắn bó theo tiêu chuẩn, hoặc Twofish, Blowfish, vv ...)

+0

>>> print encStr \ Không – Ska

+0

print "Mã hóa:% r" % d ---> tại sao không có ngoặc – CaTx

+0

không thể concat byte để int ----> lỗi trong python 3 ??? – Mehrdad

6

Bạn có thể sử dụng M2Crypto trình bao bọc Python cho OpenSSL. Nó có lợi thế là nhanh (nhanh như OpenSSL), nhưng bất lợi của tài liệu bị hạn chế.

Dưới đây là ví dụ 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

Liên kết M2Crypto bạn đã chết. – BlackVegetable

Các vấn đề liên quan