Introducción
La criptografía de clave pública, también conocida como criptografía asimétrica, es un método de cifrado que utiliza dos claves relacionadas matemáticamente, una de las cuales se mantiene privada y la otra se hace pública. Este tutorial mostrará cómo usar la criptografía de clave pública para cifrar y descifrar un mensaje en Python.
Paso 1: Instalación de las bibliotecas necesarias
Primero, deberá instalar la biblioteca de 'criptografía' de Python. Puedes hacer esto usando el administrador de paquetes pip:
pip install cryptography
Paso 2: Generación de un par de claves
El primer paso en el proceso de cifrado es la generación de un par de claves (pública y privada).
from cryptography.hazmat.primitives.asymmetric import rsa
from cryptography.hazmat.primitives import serialization
private_key = rsa.generate_private_key(
public_exponent=65537,
key_size=2048,
)
public_key = private_key.public_key()
Paso 3: Serialización de clave pública
La clave pública se puede compartir con cualquier persona, por lo que es posible que deba serializarse en un formato que se pueda compartir.
public_pem = public_key.public_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PublicFormat.SubjectPublicKeyInfo,
)
Paso 4: Cifrado del mensaje
Ahora que tenemos una clave pública, podemos usar esa clave para cifrar un mensaje.
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import padding
message = b"A secret message"
encrypted = public_key.encrypt(
message,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
Paso 5: Descifrado de mensajes
Finalmente, podemos usar la clave privada para descifrar el mensaje.
original_message = private_key.decrypt(
encrypted,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
print(original_message)
Conclusión
En conclusión, la criptografía de clave pública es una técnica poderosa y segura para garantizar que los mensajes se puedan compartir de forma segura entre las partes. Recuerde que la clave privada debe mantenerse en secreto y protegida, mientras que la clave pública puede distribuirse libremente.