¿Cuáles son mis opciones para cifrar un archivo antes de escribirlo en Python?

Necesito algo simple, donde pueda:

  1. cifrarlo con una contraseña (sal, todo lo relacionado)
  2. escribirlo en el disco

Entonces lo contrario:

  1. leer del disco
  2. descifrarlo con mi contraseña

Todo lo que descubro allí no se mantiene correctamente, o no tiene ejemplos, o está desactualizado, o necesita 50 líneas de código para usarse, que tengo que mantener yo mismo.

Me gustaría tener algo tan simple como lo que hago localmente en mi terminal. Hago esto en mi terminal:

Para cifrar:

$ cat data | openssl des3 -salt | dd of=output.des3

Para descifrar:

$ dd if=output.des3 | openssl des3 -d -salt

¿Cómo puedo hacer esto en Python de forma cruzada y segura?

@onurcano22 Gracias por la respuesta. Lamentablemente no quiero hacer hash. Hashing no conserva los datos y es una función unidireccional. Necesito encriptar datos contra una contraseña.
No me he ocupado mucho del cifrado/descifrado y supongo que muchos otros tampoco lo hicieron. Creo que obtendrá mejor ayuda en stackoverflow.com
@onurcano22 Tenía miedo de que se llamara recomendación de software... pero acabo de publicar una pregunta en stackoverflow.

Respuestas (1)

En primer lugar, evite el cifrado 3DES. Existe solo como un recurso provisional creado debido al pánico después de que se rompiera el DES normal, pero antes de que la gente tuviera una alternativa razonable. Es solo marginalmente más seguro que el DES simple (que está trivialmente roto) y es terriblemente ineficiente en comparación con cosas más modernas (incluso Blowfish, que no es mucho más reciente, es más rápido y más seguro ).

Ahora, en cuanto a hacer lo que está hablando en Python, sugeriría echar un vistazo a Cryptography . Es el estándar de facto para operaciones criptográficas en Python que no son manejadas explícitamente por algún módulo de propósito especial (como el soporte SSL en la biblioteca estándar). Si bien nunca he hecho nada directamente con él, es utilizado por una amplia variedad de otros proyectos para obtener soporte criptográfico.