Criptografía con Python

Criptografía con Python

La criptografía, la ciencia de los cifrados, se hace realidad con la ayuda de la codificación. No podemos decidir que un lenguaje de programación sea mejor o peor que otro. Sin embargo, la selección de una biblioteca de criptografía apropiada marca la diferencia.

Python proporciona algunas bibliotecas y módulos muy sofisticados para el cifrado y el descifrado de los datos. Algunos de ellos son criptografía, hashlib, simple cristal, etc. El artículo demuestra el uso de prácticas criptográficas modernas en Python con la ayuda de la Biblioteca de Criptografía al ilustrar cómo cifrar y descifrar cadenas y archivos de texto.

Instalación de la biblioteca de criptografía

La criptografía es una biblioteca en Python que proporciona varias formas criptográficas para los usuarios; Uno de ellos es el cifrado y el descifrado de datos fáciles. Use el siguiente comando para instalar la biblioteca de criptografía.

Ubuntu@ubuntu: ~ $ Pip Install Cryptography

Cifrado de texto

Importación de Fernet

Después de una instalación exitosa, el módulo Fernet se importa desde la biblioteca. La función asume la responsabilidad del cifrado y el descifrado de datos. Para eso, cree un archivo de Python e importe el módulo Fernet desde la biblioteca de criptografía de la siguiente manera:

De la criptografía.Fernet Importación Fernet

Generación de la llave

Ahora genere la clave de autenticación definiendo una función o simplemente usando un generador de Fernet en Python. El Fernet.La función Generate_Key () generará una clave para el cifrado y el descifrado. Agregue la siguiente línea al código:

>> Key = Fernet.Generate_Key ()

Ahora la clase Fernet se instanciará utilizando la clave generada.

>> fernet = fernet (clave)

Cifrado de cadena de texto

El cifrado del texto ahora está a solo unas pocas líneas de código. Agregue las siguientes líneas para encriptar su texto.

>> mensaje = "Este texto estará encriptado"
>> cifrado_message = fernet.encrypt (mensaje.codificar())
>> imprimir ('Cadena de texto original:', mensaje)
>> imprimir ('Mensaje después del cifrado:' Cienceed_message)

La ejecución del código Python anterior genera una cadena indescifrable de caracteres alfanuméricos, como se muestra a continuación. Es la forma más simple de cifrado de cadena de texto con la ayuda de la biblioteca de criptografía en Python. En primer lugar, codifica la cadena para cifrarla más tarde usando la receta de cifrado de criptografía.

El descifrado de la cadena de texto

Después del cifrado de cadena a través del método de cifrado de FERRET, descifrar el texto a su formulario original. El descifrado exitoso asegura que el destinatario pueda decodificar y acceder a la información sin ningún problema.

Por lo tanto, para el descifrado suave, los módulos de Fernet también rinden una función de descifrado fácil. Agregar estas dos líneas a su archivo Python descifrará el mismo mensaje a su formulario inicial sin problemas.

descifrado_message = fernet.Decrypt (cifrado_message).descodificar()
print ('cadena descifrada de texto:', Decrypted_message)

Las líneas de código anteriores usan la misma instancia de Fernet que usa la clave guardada en la memoria del programa para el descifrado. El Fernet.la función Decrypt () Devuelve la cadena codificada después del descifrado, ya que estaba codificada antes del cifrado. Ahora la función de decodificación devuelve la cadena codificada a su formulario original.

Cifrado de archivo

Al igual que el cifrado de texto, importe el módulo Fernet para el cifrado de archivos y la generación de claves. Importar el módulo Fernet desde la biblioteca de criptografía.

De la criptografía.Fernet Importación Fernet

Generación de claves

Como se muestra arriba, use la función del generador de teclas Fernet para generar la tecla. Aunque es un mejor enfoque para probar el cifrado y el descifrado de los textos cortos, no es prácticamente útil, ya que pierde la clave permanentemente después de la terminación del programa. Por lo tanto, se recomienda almacenar la clave en un archivo de manera segura para que pueda leerse y utilizarse cuando sea necesario.

Habilite esto definiendo una función de generador de clave en el código que escribe la clave a un archivo. También se puede hacer almacenando la tecla Fernet en un archivo de texto. Genere la clave y guárdela en un archivo para uso futuro.

>> Key = Fernet.Generate_Key ()
>> con Open ('KeyFile.clave ',' wb ') como perfil de tecla:
archivo de clave.escribir (clave)

Este código generará una cadena alfanumérica aleatoria y la almacenará en el archivo de teclas.archivo de clave.

Encriptación

Use la siguiente línea de código para leer la clave ya almacenada para el cifrado de archivos.

>> con Open ('KeyFile.clave ',' rb ') como keyfile:
>> tecla = keyfile.leer()

Uso de la tecla para la instancia de Fernet:

>> fernet = fernet (clave)

Abra y lea el archivo para encriptar y cifre los datos en el archivo usando el cifrado de Fernet:

>> con Open ('Lista.csv ',' rb ') como original_file:
original_data = original_file.leer()
>> cifrado_data = fernet.encrypt (original_data)

Ahora abra el archivo en modo de escritura y vuelva a escribir los datos cifrados:

>> con Open ('Lista.csv ',' wb ') como cifrado_file:
archivo encriptado.escribir (cifrado_data)

La ejecución del código anterior reemplazará los datos del archivo original con una mayor parte de cadenas alfanuméricas.

Descifrar el archivo

Use el módulo Fernet nuevamente para descifrar el archivo con la misma clave. El siguiente código lee primero los datos del archivo cifrado y los restaura a su formulario original con la función Decrypt.

>> fernet = fernet (clave)
>> con Open ('Lista.csv ',' rb ') como cifrado_file:
cifrado_data = cifrado_file.leer()
>> Decrypted_data = Fernet.Decrypt (cifrado_data)
>> con Open ('Lista.csv ',' wb ') como Decrypted_File:
Decrypted_file.escribir (descifrado_data)

Conclusión

Cryptography Library es una de las muchas bibliotecas y módulos que Python ofrece para la comunicación segura y el cifrado. El módulo Fernet de la biblioteca proporciona un generador de claves incorporado y proporciona funciones de cifrado y descifrado para una cadena de datos y archivos grandes.