0Pricing
Cryptology Academy · Lección

Introducción a la biblioteca cryptography de Python

Configure hazmat y las primitivas de alto nivel, y comprenda la estructura de la biblioteca.

Introducción a la biblioteca cryptography de Python es una lección gratuita de Cryptology Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Cryptology Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Cryptology Academy incluye 4 lecciones en total.

¿Por qué utilizar la biblioteca cryptography?

La biblioteca cryptography de Python (de PyCA) proporciona una interfaz Fernet de alto nivel y primitivas hazmat de bajo nivel. Utiliza OpenSSL internamente y es el estándar de la comunidad para la criptografía de producción en Python.

Instalación y estructura

Instalación: pip install cryptography. Dos capas: cryptography.fernet (cifrado simétrico seguro y basado en opiniones) y cryptography.hazmat.primitives (AES, RSA, EC, hashes, HMAC; utilícela con cuidado).

Fernet: cifrado simétrico seguro

Fernet utiliza AES-128-CBC + HMAC-SHA256 con una marca de tiempo. Gestiona automáticamente la generación del IV, el relleno y el MAC. Es ideal para cifrar valores de configuración, tokens o blobs pequeños.

from cryptography.fernet import Fernet

# Generate a URL-safe base64-encoded 32-byte key
key = Fernet.generate_key()
f = Fernet(key)

token = f.encrypt(b"my secret data")
print("Encrypted:", token[:40], "...")

plain = f.decrypt(token)
print("Decrypted:", plain)

Primitivas hazmat: hashes

La capa hazmat proporciona SHA-2, SHA-3, BLAKE2 y otros:

from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.backends import default_backend

digest = hashes.Hash(hashes.SHA256(), backend=default_backend())
digest.update(b"Hello, ")
digest.update(b"world!")
result = digest.finalize()
print("SHA-256:", result.hex())

Primitivas hazmat: HMAC

HMAC para la autenticación de mensajes:

from cryptography.hazmat.primitives import hmac, hashes
import os

key = os.urandom(32)
h = hmac.HMAC(key, hashes.SHA256())
h.update(b"authenticated message")
signature = h.finalize()
print("HMAC-SHA256:", signature.hex())

# Verify
h2 = hmac.HMAC(key, hashes.SHA256())
h2.update(b"authenticated message")
h2.verify(signature)  # raises if invalid

Serialización de claves

Serialice las claves en PEM/DER para almacenarlas o transmitirlas:

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)
pem = private_key.private_bytes(
    encoding=serialization.Encoding.PEM,
    format=serialization.PrivateFormat.PKCS8,
    encryption_algorithm=serialization.BestAvailableEncryption(b"passphrase")
)
print(pem[:60])

Carga de claves desde PEM

Cargue una clave PEM desde el disco:

from cryptography.hazmat.primitives.serialization import load_pem_private_key

with open("private_key.pem", "rb") as f:
    pem_data = f.read()

key = load_pem_private_key(pem_data, password=b"passphrase")
print("Key loaded, size:", key.key_size, "bits")

Gestión de certificados X.509

Analice e inspeccione certificados TLS:

from cryptography import x509
import datetime

with open("cert.pem", "rb") as f:
    cert = x509.load_pem_x509_certificate(f.read())

print("Subject:", cert.subject)
print("Issuer:", cert.issuer)
print("Not valid after:", cert.not_valid_after_utc)
print("Serial:", cert.serial_number)

Generación de bytes aleatorios

Utilice siempre os.urandom o secrets para generar aleatoriedad criptográfica:

import os, secrets

# Cryptographically secure 32-byte key
key = os.urandom(32)
print("Random key:", key.hex())

# secrets module: URL-safe token
token = secrets.token_urlsafe(32)
print("URL-safe token:", token)

Cómo evitar errores con hazmat

La API hazmat se denomina «Materiales peligrosos» por un motivo. Errores comunes: reutilizar nonces, utilizar el modo ECB, omitir las etiquetas de autenticación y comparar MAC con ==. Utilice API de alto nivel siempre que sea posible.

Comprobación de conocimientos

¿Qué proporciona el cifrado Fernet que no proporciona AES-CBC sin autenticación por sí solo?

Resumen de la lección

La biblioteca cryptography tiene dos capas: Fernet, segura, y hazmat, flexible. Utilice Fernet para el cifrado simétrico y hazmat para AES-GCM, RSA, ECDSA y la gestión de certificados. Utilice siempre os.urandom para las claves. Evite los errores de hazmat; prefiera los modos autenticados.

Preguntas frecuentes

¿La lección «Introducción a la biblioteca cryptography de Python» es gratis?

Sí — el texto completo de «Introducción a la biblioteca cryptography de Python» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Cryptology Academy, actualiza a CoddyKit PRO. El curso de Cryptology Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Introducción a la biblioteca cryptography de Python»?

Configure hazmat y las primitivas de alto nivel, y comprenda la estructura de la biblioteca. Practicas Cryptology Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Cryptology Academy?

No se requiere experiencia previa. Cryptology Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.

¿Cuánto tiempo toma la lección «Introducción a la biblioteca cryptography de Python»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Cryptology Academy?

Sí. Cada lección de Cryptology Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Introducción a la biblioteca cryptography de Python
  2. Cifrado y descifrado AES-GCM en Python
  3. Pares de claves RSA y ECDSA en Python
  4. Errores habituales de criptografía en Python y patrones seguros
← Volver a Cryptology Academy