Cifrar una cadena de Python

Vaibhhav Khetarpal 11 julio 2021
  1. Utilice Simple Crypt para cifrar una cadena en Python
  2. Utilice la biblioteca de cryptocode para cifrar una cadena en Python
  3. Utilice el paquete Cryptography para cifrar una cadena en Python
  4. Utilice el algoritmo RSA para cifrar una cadena en Python
Cifrar una cadena de Python

El cifrado se puede definir como el proceso que transforma el texto sin formato en texto cifrado. Esencialmente, se usa para codificar los datos. El proceso de cifrado requiere una clave, que luego se puede utilizar para descifrar el mensaje original.

Este artículo discutirá los diferentes métodos que puede utilizar para cifrar una cadena en Python.

Utilice Simple Crypt para cifrar una cadena en Python

Usar el módulo Simple Crypt es la forma más rápida y sencilla de lograr el proceso de encriptación para Python 2.7 y 3. Este método convierte el texto plano en un texto cifrado en segundos, con la ayuda de una sola línea de código.

El módulo PyCrypto proporciona la implementación del algoritmo para esta biblioteca y utiliza el cifrado AES256. Este método incorpora una verificación HMAC con el cifrado SHA256 para notificar cuando el texto cifrado es alterado o modificado.

Simple Crypt tiene dos funciones: “cifrar” y “descifrar”. Es esencial instalar los módulos pycrypto y Simple Crypt para usar ambas funciones.

El siguiente código utiliza simplecrypt para cifrar una cadena en Python:

from simplecrypt import encrypt, decrypt

passkey = "wow"
str1 = "I am okay"
cipher = encrypt(passkey, str1)
print(cipher)

La salida de este código sería un grupo de letras aleatorias.

Para decodificar / descifrar el texto cifrado, usaremos el siguiente comando:

print(decrypt("wow", cipher))

Producción :

I am okay

Utilice la biblioteca de cryptocode para cifrar una cadena en Python

El término cryptocode es una biblioteca simple que nos permite cifrar y descifrar cadenas de forma segura y sencilla en Python 3 o superior. Recuerde que esta biblioteca debe instalarse manualmente; se puede hacer usando el comando pip.

El siguiente programa utiliza la biblioteca cryptocode para cifrar una cadena en Python:

import cryptocode

str_encoded = cryptocode.encrypt("I am okay", "wow")
# And then to decode it:
str_decoded = cryptocode.decrypt(str_encoded, "wow")
print(str_decoded)

Producción :

I am okay

El primer parámetro de la función sería la cadena que debe cifrarse. El segundo parámetro debe ser la clave, que se utilizará con el propósito de descifrar.

Utilice el paquete Cryptography para cifrar una cadena en Python

Cryptography es un paquete de Python que se puede utilizar para lograr el cifrado de clave simétrica. El cifrado de clave simétrica es una forma en que usamos la misma clave para el proceso de codificación y decodificación.

Es necesario instalar la biblioteca Cryptography para poder utilizar este método de cifrado; esto se puede hacer usando el comando pip.

El siguiente código utiliza las funciones del paquete cryptography para cifrar una cadena en Python:

from cryptography.fernet import Fernet

str1 = "I am okay"
key = Fernet.generate_key()

fernet = Fernet(key)

enctex = fernet.encrypt(str1.encode())

dectex = fernet.decrypt(enctex).decode()

print("The primordial string: ", str1)
print("The Encrypted message: ", enctex)
print("The Decrypted message: ", dectex)

Producción :

The primordial string: I am okay
The Encrypted message: <a stack of random letters>
The Decrypted message: I am okay

En el código anterior, importamos Fernet del módulo cryptography.fernet. Luego, generamos una clave de cifrado que se utilizará tanto para codificar como para decodificar. La clase Fernet se instancia con la clave de cifrado. Luego, la cadena se cifra con la instancia de Fernet. Finalmente, se descifra con la instancia de la clase Fernet.

El cifrado de clave simétrica es una forma sencilla de cifrar una cadena. El único inconveniente es que es comparativamente menos seguro. Cualquiera que tenga la clave puede leer el texto cifrado.

Utilice el algoritmo RSA para cifrar una cadena en Python

El algoritmo RSA en Python implementa el cifrado de clave asimétrica. El cifrado de clave asimétrica utiliza dos claves diferentes para el proceso de cifrado y descifrado.

Estas dos claves son la clave privada y la clave pública. La clave pública es pública y se utiliza para el proceso de cifrado. Cualquiera que tenga la clave pública puede cifrar y enviar los datos; solo el receptor tiene la clave privada. Además, alguien con acceso a él también puede descifrar los datos.

La biblioteca rsa debe instalarse primero para utilizar este método. Puede utilizar el comando general pip para la instalación de esta biblioteca.

El siguiente código utiliza el algoritmo RSA para cifrar una cadena en Python:

import rsa

pubkey, privkey = rsa.newkeys(512)

str1 = "I am okay"

enctex = rsa.encrypt(str1.encode(), pubkey)


dectex = rsa.decrypt(enctex, privkey).decode()
print("The primordial string: ", str1)
print("The Encrypted message: ", enctex)
print("The Decrypted message: ", dectex)

Producción :

The primordial string: I am okay
The Encrypted message: <a stack of random letters>
The Decrypted message: I am okay

En el código anterior, se importa el módulo rsa y las claves pública y privada se generan con la ayuda de la función rsa.newkeys(). Luego, la cadena se cifra mediante la clave pública. A continuación, la cadena se puede descifrar utilizando sólo la clave privada. Las claves pública y privada en el caso de este programa son pubkey y privkey, respectivamente.

El cifrado de clave asimétrica proporciona una mayor seguridad que el cifrado de clave simétrica. Al igual que en el primero, una clave privada específica solo es accesible para el receptor y se utiliza para el propósito de descifrado. Mientras que solo existe una clave en este último, el proceso de descifrado es más fácil y menos seguro frente a ataques de terceros en medio del remitente y el receptor.

Vaibhhav Khetarpal avatar Vaibhhav Khetarpal avatar

Vaibhhav is an IT professional who has a strong-hold in Python programming and various projects under his belt. He has an eagerness to discover new things and is a quick learner.

LinkedIn

Artículo relacionado - Python String

Artículo relacionado - Python Encryption