2010-03-12 242 views
10

cuál es el mejor módulo/paquete en python para usar des/3des para cifrado/descifrado. podría alguien proporcionar un ejemplo para cifrar datos con des/3des en python.usando DES/3DES con python

Respuesta

17

pyDes se puede utilizar para DES y 3DES. Ejemplo de uso:

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 

Una alternativa es el Chillkat Python Encryption Library que soporta una gran cantidad de algoritmos de cifrado DES (incluyendo & 3DES), pero es no libre. Ejemplo de uso:

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 

De todos modos, espero que usted es consciente de que ni el DES ni 3DES se consideran paritcularly segura hoy en día, hay muchas alternativas mejores (AES en primer lugar si usted quiere meter a estándares, o Twofish, Blowfish, etc ...)

+0

>>> print encStr \ – Ska

+0

Ninguno de impresión "Cifrado:?% R" % d ---> ¿Por qué no hay paréntesis – CaTx

+0

no puede concat bytes a int ----> error en python 3 ??? – Mehrdad

6

Puede usar el contenedor M2Crypto Python para OpenSSL. Tiene la ventaja de ser rápido (tan rápido como OpenSSL), pero la desventaja de la documentación es limitada.

Aquí está el ejemplo 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

El enlace M2Crypto que tienes está muerto. – BlackVegetable