Cómo generar firmas HMAC: SHA-256, SHA-1, SHA-512
Aprende a generar y verificar firmas HMAC para solicitudes API, webhooks y JWTs. Herramienta gratuita en el navegador.
¿Qué es una firma HMAC?
HMAC (Hash-based Message Authentication Code) es una forma de verificar la integridad y autenticidad de un mensaje. Usa una función hash criptográfica (normalmente SHA-256) combinada con una clave secreta compartida para producir una firma única para una entrada dada. Si cambia un solo byte del mensaje, la firma también cambia.
HMAC se usa ampliamente en autenticación de API, verificación de webhooks, firma de JWT y protocolos de comunicación seguros. A diferencia de un hash simple, HMAC requiere una clave, lo que significa que solo las partes que poseen el secreto pueden producir o verificar la firma.
Casos de uso comunes
- Verificación de webhooks: confirmar que una solicitud entrante viene de un emisor conocido
- Firma de solicitudes API: permitir que un servidor verifique que la solicitud la emitió un cliente conocido
- Firma de JWT: producir el segmento de firma de un JSON Web Token
- Integridad de archivos: detectar manipulaciones en tránsito o en almacenamiento
- OAuth 1.0a y AWS Signature V4: esquemas de firma clásicos y modernos
Método 1: Usa el generador HMAC gratuito de UtilBoxx (Recomendado)
Nuestro generador de firmas HMAC admite HMAC-SHA-256, HMAC-SHA-1 y HMAC-SHA-512, y produce salida en hex o Base64. Así se usa:
- Ve a utilboxx.com/es/tools/crypto/hmac
- Introduce tu mensaje y clave secreta
- Elige el algoritmo (SHA-256 por defecto)
- Elige el formato de salida (hex o Base64)
- Copia la firma generada con un clic
Por qué funciona este método:
- Se ejecuta por completo en tu navegador — los secretos nunca salen de tu dispositivo
- Soporta los algoritmos HMAC más comunes
- Actualización en vivo al escribir
- Adaptado a móvil
- 100% gratis, sin registro, sin anuncios
Método 2: Usa OpenSSL en la línea de comandos
El comando `openssl` está disponible en Linux, macOS y Windows (con Git Bash o WSL):
```bash echo -n "message" | openssl dgst -sha256 -hmac "mysecretkey" ```
Esto produce una firma HMAC-SHA-256 en hex. Sustituye `sha256` por `sha1` o `sha512` para otros algoritmos.
Método 3: Usa una librería en tu lenguaje
En Node.js, el módulo `crypto` integrado maneja HMAC:
```javascript const crypto = require('crypto'); const hmac = crypto.createHmac('sha256', 'mysecretkey'); hmac.update('message'); console.log(hmac.digest('hex')); ```
En Python:
```python import hmac, hashlib print(hmac.new(b"mysecretkey", b"message", hashlib.sha256).hexdigest()) ```
En Go:
```go package main import ("crypto/hmac"; "crypto/sha256"; "encoding/hex"; "fmt") func main() { mac := hmac.New(sha256.New, []byte("mysecretkey")) mac.Write([]byte("message")) fmt.Println(hex.EncodeToString(mac.Sum(nil))) } ```
Preguntas frecuentes
¿HMAC es lo mismo que una firma digital?
No. HMAC usa una clave compartida, mientras que una firma digital usa criptografía asimétrica (clave pública/privada). HMAC es más rápido y simple, pero debes compartir el secreto de forma segura con todas las partes que necesiten verificar la firma.
¿Qué función hash debo usar?
HMAC-SHA-256 es el estándar moderno. Es muy compatible, seguro y rápido. HMAC-SHA-1 se considera legacy y solo se usa por compatibilidad con sistemas antiguos. HMAC-SHA-512 ofrece mayor seguridad para aplicaciones muy sensibles.
¿Se puede revertir una firma HMAC?
No. La firma es una función unidireccional. Un atacante no puede recuperar el mensaje ni la clave a partir de la firma, pero puede verificar conjeturas si sospecha el mensaje. Usa claves largas y aleatorias para maximizar la seguridad.
¿Qué pasa si la clave se filtra?
Una clave filtrada permite a los atacantes falsificar firmas válidas para cualquier mensaje, rompiendo completamente la autenticación. Trata las claves HMAC como contraseñas: guárdalas de forma segura, rótalas con regularidad y nunca las subas al control de código fuente.
Conclusión
HMAC es una herramienta fundamental para API seguras e integridad de mensajes. Para un generador rápido en el navegador, la herramienta de firma HMAC de UtilBoxx es la forma más fácil de calcular y verificar firmas.