Senha vs UUID vs Hash vs Token: Guia de 8 tipos de strings aleatórias para desenvolvedores

En el desarrollo de software, te encuentras constantemente con cadenas como 550e8400-e29b-41d4-a716-446655440000. UUID, contraseñas, hashes, tokens, claves API… todas parecen similares, pero su propósito de diseño es fundamentalmente diferente.

Comparación de los 8 tipos

TipoUso principal¿Secreto?¿Reversible?GeneraciónCaracterística
UUIDIdentificación únicaNoAleatorio / tiempoID sin colisiones
ContraseñaAutenticaciónSolo el dueñoHumanoSecreto memorizado
HashVerificaciónNoIrreversibleFunción matemáticaHuella digital
TokenAuth / autorizaciónDependeCSPRNGExpira
Clave APIAuth de servicioCSPRNGContraseña de máquina
SaltRefuerzo de hashNoCSPRNGDefensa rainbow table
NonceID de un solo usoNoCSPRNGPrevención de replay
FirmaDetección de alteraciónNoIrreversibleCálculo criptoHMAC, RSA

UUID — Una etiqueta sin colisiones

UUID genera IDs que no colisionan en todo el mundo. No tiene relación con la seguridad — su único trabajo es la identificación. UUID v4 usa 122 bits de entropía.

Casos de uso: Claves primarias en bases de datos, IDs de objetos en sistemas distribuidos, nombres de archivos para subidas, IDs de rastreo.

💡 Tip

UUID v1 incluye timestamp y MAC — usa v4 para IDs públicos. Nunca reutilices un UUID como token de sesión.

Use nosso gerador de UUID gratuito

Contraseña — El único secreto humano

La contraseña es el único tipo diseñado para la memorización humana. Almacenamiento solo con algoritmos lentos: bcrypt, Argon2 o scrypt. ¿Por qué «lentos»? Cuando un atacante intenta miles de millones de hashes por segundo, un algoritmo que tarda 0.1s por cálculo aumenta el coste del ataque exponencialmente.

💡 Tip

La fortaleza = conjunto de caracteres × longitud. correct horse battery staple supera a P@ssw0rd. Usa siempre un gestor de contraseñas.

Use nosso gerador de senhas gratuito

Hash — Una huella digital

Una función hash transforma datos de cualquier longitud en un valor de longitud fija — de forma irreversible. Es una huella digital de datos. SHA-256 comprime tanto «hello» como un archivo de 1 GB en 256 bits.

Casos de uso: Almacenamiento de contraseñas, checksums de archivos, IDs de commits en Git, blockchain.

💡 Tip

MD5 y SHA-1 tienen ataques de colisión prácticos — usa SHA-256+. Para contraseñas, usa bcrypt/Argon2 (SHA es «demasiado rápido»).

Use nosso gerador de hash gratuito

Token — Un pase temporal

Un token demuestra temporalmente «esta persona está autenticada». El ejemplo más famoso es JWT, que contiene header, payload y firma en Base64.

Casos de uso: Gestión de sesiones web, tokens OAuth 2.0, enlaces de verificación por email, auth stateless en SPAs.

💡 Tip

El payload de JWT es Base64 — no cifrado. Nunca pongas contraseñas en un JWT. TTL corto (15 min – 1 hora) + refresh tokens.

Use nosso gerador de tokens gratuito

Clave API — Una contraseña para máquinas

Una clave API permite que una aplicación diga «soy un usuario autorizado». No necesita ser memorizada: puede ser larga y aleatoria (128–256 bits). El riesgo principal es la filtración en código fuente.

💡 Tip

Guarda las claves en .env y añádelo a .gitignore. El Secret Scanning de GitHub puede revocar algunas claves automáticamente.

Use nosso gerador de chaves API e tokens gratuito

Salt, Nonce y Firma — Los especialistas entre bastidores

Estos tres son componentes que refuerzan otros mecanismos.

Salt

Valor aleatorio por usuario al hacer hash de contraseñas. Misma contraseña + salts diferentes = hashes diferentes. No necesita ser secreto — bcrypt y Argon2 lo gestionan automáticamente.

Nonce

«Number used ONCE» — valor desechable para prevenir ataques de replay. WordPress wp_nonce_field() es un ejemplo conocido.

Firma

Demuestra que los datos no han sido alterados. HMAC combina una clave secreta con un mensaje. Los webhooks de Stripe y GitHub usan firmas HMAC.

Ejes de diseño

Tipo¿Secreto?¿Recuperable?¿Unicidad?¿Expira?¿Humano?
UUID××××
Contraseña×
Hash××××
Token×
Clave API××
Salt××××
Nonce×××
Firma×××

Modelo de ataque

TipoAtaqueDefensa
UUIDColisiónEntropía suficiente
ContraseñaFuerza brutaHash lento + salt + longitud
HashPreimagenSHA-256+
TokenReplayTTL corto + HTTPS
Clave APIFiltraciónEnv vars + rotación
NonceReplayUn solo uso
FirmaAlteraciónGestión de clave

Flujo de decisión

  1. Propósito — ¿Identificación? ¿Autenticación? ¿Verificación? ¿Temporal?
  2. Amenaza — ¿Colisión? ¿Adivinación? ¿Filtración? ¿Replay?
  3. Entropía — 122 bits UUID, 256 bits tokens
  4. GeneraciónMath.random() nunca; módulos crypto
  5. Almacenamiento — ¿Texto plano? ¿Hash? ¿Variable de entorno?

Resumen

  • Identificación: UUID
  • Autenticación: Contraseña, Clave API
  • Verificación: Hash, Firma
  • Auth temporal: Token, Nonce, Salt

Pueden verse iguales, pero su propósito es completamente diferente. «No mires la cadena — mira el propósito.»

Comments

Leave a Reply

Your email address will not be published. Required fields are marked *