Solución:
pyDES es una implementación DES y Triple-DES escrita completamente en Python.
Aquí hay un ejemplo simple y portátil que debería ser lo suficientemente seguro para las necesidades básicas de cifrado de cadenas. Simplemente coloque el módulo pyDES en la misma carpeta que su programa y pruébelo:
Computadora del remitente
>>> from pyDES import * # pyDes if installed from pip
>>> ciphertext = triple_des('a 16 or 24 byte password').encrypt("secret message", padmode=2) #plain-text usually needs padding, but padmode = 2 handles that automatically
>>> ciphertext
')xd8xbfFn#EYxcbiHxfax18xb4xf7xa2' #gibberish
Computadora del destinatario
>>> from pyDES import *
>>> plain_text = triple_des('a 16 or 24 byte password').decrypt(')xd8xbfFn#EYxcbiHxfax18xb4xf7xa2', padmode=2)
>>> plain_text
"secret message"
Es posible que obtenga un error en Python3
del código de Computadora del destinatario
ValueError: pyDes can only work with encoded strings, not Unicode.
from pyDes import *
a = b')xd8xbfFn#EYxcbiHxfax18xb4xf7xa2'
plain_text = triple_des('a 16 or 24 byte password').decrypt(a, padmode=2)
print(plain_text)
Solo agrega b
al comienzo del texto cifrado. Para un código más claro, asígnelo a una nueva variable (en este caso, es a
y descifrar a
de forma normal).
http://www.dlitz.net/software/pycrypto/ debería hacer lo que quiera.
Tomado de su página de documentos.
>>> from Crypto.Cipher import DES
>>> obj=DES.new('abcdefgh', DES.MODE_ECB)
>>> plain="Guido van Rossum is a space alien."
>>> len(plain)
34
>>> obj.encrypt(plain)
Traceback (innermost last):
File "<stdin>", line 1, in ?
ValueError: Strings for DES must be a multiple of 8 in length
>>> ciph=obj.encrypt(plain+'XXXXXX')
>>> ciph
' 21,343Nq214DY337T342pA372255311s210363,300j330250312347342I3215w 3561303dgb/ 06'
>>> obj.decrypt(ciph)
'Guido van Rossum is a space alien.XXXXXX'
para python 2, debe usar keyczar http://www.keyczar.org/
para python 3, hasta que keyczar esté disponible, he escrito simple-crypt http://pypi.python.org/pypi/simple-crypt
Estoy respondiendo esto dos años tarde ya que las cosas han cambiado desde que se hizo la pregunta.
tenga en cuenta que las respuestas anteriores a esta pregunta utilizan cifrados débiles (según los estándares actuales) y no tienen ningún refuerzo clave. las dos recomendaciones aquí son probablemente más seguras.