una txt imagenes frase facil encriptar desencriptar con como codigo cifrado cesar archivos archivo python encryption

python - txt - desencriptar cifrado cesar



cifrar/descifrar simple lib en python con clave privada (5)

¿Hay alguna manera simple de encriptar / desencriptar una cadena con una clave?

algo así como:

key = ''1234'' string = ''hello world'' encrypted_string = encrypt(key, string) decrypt(key, encrypted_string)

no pude encontrar nada simple para hacer eso.


Expandir la respuesta de dsamersoff. Esto es simple e inseguro, pero para ciertas tareas puede ser útil. aquí hay un código:

import crypt import getpass import os.path def auth_func(): return (raw_input(''Username:''), getpass.getpass(''Password:'')) def xor(a,b): assert len(b) >= len(a) return "".join([chr( ord(a[i]) ^ ord(b[i])) for i in range(len(a))]) # create a new credentials file if needed if not os.path.exists(''cred''): with open(''cred'', ''w'') as f: user, pwd = auth_func() f.write ("{}/n".format(user)) f.write ("{}/n".format(xor(pwd, crypt.crypt(''secret'', ''words'')))) f.close() # read credentials and print user/password with open(''cred'', ''r'') as f: user, pwd = f.read().split(''/n'')[:2] print user print xor(pwd, crypt.crypt(''secret'', ''words''))


La manera más simple y rápida de encriptar fragmentos de texto cortos con claves pregrabadas es utilizar una de las funciones de criptohash (md5, sha, etc.).

es decir, calcule md5 de su clave, luego x o su fragmento de cuerda con este hash md5. si necesita codificar texto fragmen más largo que la longitud de md5 - haga md5 (md5 hash) y encripte el próximo fragmento.

La seguridad de esta solución es peor que con 3-DES, pero es suficiente en el caso promedio (es decir, almacenar una contraseña no muy segura en el archivo de configuración) y no requiere nada además de la distribución básica de Python.

Si necesita una mejor seguridad, busque una implementación de AES, Blowfish, etc., pero para beneficiar realmente a AES, debe hacer un trabajo adicional para mezclar sus datos con los aleatorios.


para Python 2, debes 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 porque 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 fortalecimiento clave. las dos recomendaciones aquí son probablemente más seguras.


pyDES es una implementación DES y Triple-DES completamente escrita 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 '')/xd8/xbfFn#EY/xcbiH/xfa/x18/xb4/xf7/xa2'' #gibberish

Computadora del destinatario

>>> from pyDES import * >>> plain_text = triple_des(''a 16 or 24 byte password'').decrypt('')/xd8/xbfFn#EY/xcbiH/xfa/x18/xb4/xf7/xa2'', padmode=2) >>> plain_text "secret message"


http://www.dlitz.net/software/pycrypto/ debe 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 ''/021,/343Nq/214DY/337T/342pA/372/255/311s/210/363,/300j/330/250/312/347/342I/3215w/03561/303dgb//006'' >>> obj.decrypt(ciph) ''Guido van Rossum is a space alien.XXXXXX''