¿Cómo usar import hmac en Python para sacarle el mayor provecho?

| Última modificación: 20 de enero de 2025 | Tiempo de Lectura: 3 minutos

Algunos de nuestros reconocimientos:

Premios KeepCoding

Trabajar con autenticación segura en mensajes o firmas digitales es necesario hablar de HMAC. Gracias a Python podemos usar el módulo de import hmac, que simplifica el proceso de HMAC, ya que nos permite implementar hashes seguros con clave para proteger datos sensibles y autenticar mensajes más eficientemente. El día de hoy quiero mostrarte cómo p uedes usar import hmac para sacarle el máximo provecho a sus funcionalidades.

import hmac

¿Qué es hmac y para qué se usa?

HMAC es la sigla de hash-based message authentication code y hace referencia a un algoritmo que combina un hash criptográfico con una clave secreta para autenticar un mensaje. Import hmac es la forma de implementar este algoritmo en Python. Una de sus grandes ventajas es que asegura la integridad del mensaje y la autenticidad del remitente, así pues, es excelente para tareas como:

  • Verificar que los mensajes no han sido alterados.
  • Proteger contraseñas y datos confidenciales.
  • Implementar tokens seguros en sistemas de autenticación.

El módulo hmac de Python implementa este algoritmo de acuerdo con el estándar RFC 2104 y nos brinda así una interfaz simple y segura para integrarlo en nuestros proyectos.

La autenticación y protección de los datos son pilares necesarios en la programación como se concibe actualmente, en especial si te toca manejar información sensible. Es por ello que import hmac es útil, he aquí las razones:

  1. Previene alteraciones en los datos: Cualquier cambio en un mensaje hará que el hash generado no coincida con el esperado.
  2. Protege contra ataques de reproducción: Gracias a la clave secreta, un atacante no puede generar un HMAC válido sin conocerla.
  3. Es fácil de implementar: Con solo importar hmac, puedes empezar a trabajar con autenticación segura en Python.

¿Cómo usar import hmac en Python?

Al usar el módulo hmac en python podemos realizar tareas como:

  • Crear un HMAC básico
import hmac
import hashlib

# Clave secreta y mensaje
clave_secreta = b"mi_clave_super_secreta"
mensaje = b"este es un mensaje importante"

# Crear un objeto HMAC con SHA-256
h = hmac.new(clave_secreta, mensaje, hashlib.sha256)

# Obtener el resultado del HMAC
resultado = h.hexdigest()
print(f"HMAC: {resultado}")

Este código genera un hash HMAC utilizando el algoritmo SHA-256. El resultado es único para la combinación de clave secreta y mensaje.

  • Verificar un HMAC: la verificación es completamente necesaria para asegurarnos de que los datos no han sido alterados. Para ello Python nos ofrece una función específicamente para este fin:
import hmac

def verificar_hmac(clave, mensaje, hmac_recibido):
h = hmac.new(clave, mensaje, hashlib.sha256)
return hmac.compare_digest(h.hexdigest(), hmac_recibido)

clave_secreta = b"mi_clave_super_secreta"
mensaje = b"este es un mensaje importante"
hmac_recibido = "el_hmac_que_recibiste"

if verificar_hmac(clave_secreta, mensaje, hmac_recibido):
print("El HMAC es válido")
else:
print("El HMAC no coincide")

🔴 ¿Quieres Aprender a Programar con Python? 🔴

Descubre el Full Stack Jr. Bootcamp - Aprende a Programar desde Cero de KeepCoding. La formación más completa del mercado y con empleabilidad garantizada

👉 Prueba gratis el Bootcamp Aprende a Programar desde Cero por una semana

Usar hmac.compare_digest es preferible al operador == porque reduce el riesgo de ataques de tiempo.

Autenticación de API con HMAC: ejemplo

Uno de los modos más comunes de aplicar el HMAC es para proteger solicitudes a una API. Veamos un ejemplo:

import hmac
import hashlib
import base64

def generar_token(api_clave, mensaje):
h = hmac.new(api_clave, mensaje, hashlib.sha256)
return base64.b64encode(h.digest())

def verificar_token(api_clave, mensaje, token_recibido):
token_generado = generar_token(api_clave, mensaje)
return hmac.compare_digest(token_generado, token_recibido)

# Clave de la API
api_clave = b"clave_api_secreta"
mensaje = b"GET /api/recurso?param=valor"
token = generar_token(api_clave, mensaje)

if verificar_token(api_clave, mensaje, token):
print("Token válido")
else:
print("Token no válido")

Aquí podemos ver cómo proteger solicitudes con HMAC para evitar modificaciones o accesos no autorizados.

Métodos del módulo hmac

El módulo hmac incluye métodos y atributos que que se pueden resumir en:

  1. update: Permite agregar datos adicionales al mensaje antes de calcular el hash.
  2. digest: Devuelve el hash en formato binario.
  3. hexdigest: Devuelve el hash en formato hexadecimal.
  4. compare_digest: Compara dos hashes de forma segura.

Veamos un ejemplo en el que se usa el método update:

import hmac
import hashlib

clave = b"clave_secreta"
mensaje_parte1 = b"mensaje parte 1"
mensaje_parte2 = b"mensaje parte 2"

h = hmac.new(clave, digestmod=hashlib.sha256)
h.update(mensaje_parte1)
h.update(mensaje_parte2)

print(h.hexdigest())

¿Qué debes saber para usar import hmac?

Cuando trabajes con import hmac, sigue estas recomendaciones para garantizar seguridad y eficiencia:

  1. Usa claves suficientemente largas y aleatorias: Genera claves con un mínimo de 16 bytes utilizando herramientas como os.urandom.
  2. Elige un algoritmo seguro: Opta por SHA-256 o SHA-3 para mayor seguridad.
  3. No reutilices claves: Usa una clave única para cada propósito o sistema.
  4. Protege las claves: Almacénalas en entornos seguros, como servicios de gestión de claves.

Si te interesa aprender más sobre temáticas similares a esta, te invitamos a unirte a nosotros en el bootcamp de programación desde cero, en donde aprenderás todo lo necesario para que luego de terminar puedas ingresar en el mundo laboral más fácilmente porque estarás mejor formado. No dudes en suscribirte y accede a los mejores beneficios, ¡El futuro comienza hoy!

Posts más leídos

¡CONVOCATORIA ABIERTA!

Aprende a programar desde cero

Full Stack JR. Bootcamp

Clases en Directo | Profesores en Activo | Temario 100% actualizado