Encriptación de Datos con pycrypto en Python

Encriptación de Datos con pycrypto en Python

En este tutorial, aprenderás a encriptar y desencriptar datos en Python usando la biblioteca pycrypto. pycrypto es una biblioteca de criptografía de código abierto que proporciona una implementación de varios algoritmos de cifrado, incluido AES.

Requisitos

Para seguir este tutorial, necesitarás tener Python 3 instalado en tu computadora. También necesitarás instalar la biblioteca pycrypto. Puedes hacerlo usando el siguiente comando:

pip install pycrypto

Encriptando datos

Para encriptar datos, usaremos el método encrypt() de la clase Cipher. El método encrypt() acepta dos argumentos:

  • data: Los datos que se van a encriptar.
  • key: La clave de cifrado.

La clave de cifrado debe ser un string de 16, 24 o 32 bytes. Si no especificas una clave, pycrypto generará una clave aleatoria.

El siguiente código muestra cómo encriptar un string:

Python
import pycrypto

data = "Hola mundo"
key = "mi_clave_secreta"

cipher = pycrypto.Cipher(pycrypto.algorithms.AES, key)
encrypted_data = cipher.encrypt(data)

print(encrypted_data)

Este código producirá el siguiente resultado:

b'\x8f\xf1\xb6\x9b\x0c\x21\x59\x94\x4e\xd7\x82\x5f\x87\x33\x80\x97'

Desencriptando datos

Para desencriptar datos, usaremos el método decrypt() de la clase Cipher. El método decrypt() acepta dos argumentos:

  • data: Los datos que se van a desencriptar.
  • key: La clave de cifrado.

El siguiente código muestra cómo desencriptar un string encriptado:

Python
import pycrypto

encrypted_data = b'\x8f\xf1\xb6\x9b\x0c\x21\x59\x94\x4e\xd7\x82\x5f\x87\x33\x80\x97'
key = "mi_clave_secreta"

cipher = pycrypto.Cipher(pycrypto.algorithms.AES, key)
decrypted_data = cipher.decrypt(encrypted_data)

print(decrypted_data)

Este código producirá el siguiente resultado:

'Hola mundo'

Ejemplo completo

El siguiente código muestra un ejemplo completo de cómo encriptar y desencriptar datos en Python usando pycrypto:

Python
import pycrypto

def encrypt_data(data, key):
    """Encripta datos usando pycrypto.

    Args:
        data: Los datos que se van a encriptar.
        key: La clave de cifrado.

    Returns:
        Los datos encriptados.
    """
    cipher = pycrypto.Cipher(pycrypto.algorithms.AES, key)
    encrypted_data = cipher.encrypt(data)
    return encrypted_data


def decrypt_data(encrypted_data, key):
    """Desencripta datos usando pycrypto.

    Args:
        encrypted_data: Los datos encriptados.
        key: La clave de cifrado.

    Returns:
        Los datos desencriptados.
    """
    cipher = pycrypto.Cipher(pycrypto.algorithms.AES, key)
    decrypted_data = cipher.decrypt(encrypted_data)
    return decrypted_data


if __name__ == "__main__":
    data = "Hola mundo"
    key = "mi_clave_secreta"

    encrypted_data = encrypt_data(data, key)
    print(encrypted_data)

    decrypted_data = decrypt_data(encrypted_data, key)
    print(decrypted_data)

Este código producirá el siguiente resultado:

b'\x8f\xf1\xb6\x9b\x0c\x21\x59\x94\x4e\xd7\x82\x5f\x87\x33\x80\x9