Herramientas
Guías

Generador de sal y token aleatorio

Cifrado

Genera sales y tokens aleatorios criptográficamente seguros en hex o Base64, con crypto.getRandomValues.

100 % del lado del cliente Sin backend
En esta página

¿Qué es una sal?#

Una sal es un trozo de dato aleatorio que mezclas en un proceso de hash para que dos entradas idénticas produzcan salidas distintas. Su trabajo es la singularidad, no el secreto: una sal puede quedarse en texto plano junto al hash que protege y aun así derrotar un ataque que depende de que cada usuario con la misma contraseña hashee al mismo resumen. En cuanto cada contraseña tiene su propia sal, un atacante no puede reutilizar una tabla precalculada en toda la base de datos: tiene que recalcular por entrada.

Esta página genera bytes aleatorios criptográficamente fuertes con crypto.getRandomValues y te los entrega en tres codificaciones: hex (dos caracteres por byte, la convención para sales de contraseña y tokens de integridad), base64 (más compacta) y base64url (la variante segura para URL y nombres de archivo que cambia +// por -/_ y quita el relleno =, usada en JWTs y URLs firmadas).

La misma primitiva vale como generador de tokens aleatorios de propósito general: claves de API, valores nonce, IDs opacos y tokens de un solo uso son todos «unos bytes aleatorios, codificados como texto», justo lo que esto produce.

Cómo usarlo#

  1. Ajusta el número de bytes. El valor por defecto de 16 (128 bits) es el tamaño de sal estándar; el campo admite hasta 8192 para cuando necesitas un token más largo.
  2. Elige un formato: hex, base64 o base64url.
  3. Pulsa Generar y luego Copiar. La línea de estado muestra cuántos bits de entropía representa el resultado (bytes × 8), para que confirmes de un vistazo que obtuviste lo que pediste.

Características principales#

  • Bytes aleatorios imparciales. Obtenidos de crypto.getRandomValues, el generador criptográficamente fuerte del navegador.
  • Tres codificaciones. hex para sales y sumas de comprobación; base64 para tokens compactos; base64url para cualquier cosa que viaje en una URL, un nombre de archivo o JSON.
  • Reporte honesto de entropía. La línea de estado indica el conteo de bits real en vez de la longitud de la cadena codificada, que es fácil de leer mal.
  • Hasta 8192 bytes. La misma herramienta sirve para una sal de 16 bytes y para un blob de clave de 256 bytes.
  • Cero subidas. La generación es local; los bytes aleatorios nunca se transmiten.

Ejemplo detallado#

Genera 16 bytes en cada uno de los tres formatos. Una extracción de 16 bytes son 128 bits de entropía, y las longitudes codificadas son fijas independientemente de los valores aleatorios:

  • hex: 32 caracteres, p. ej. 7a4c9f1e0b8d2635c4a1e9f07b2d4861
  • base64: 24 caracteres con relleno ==, p. ej. 8MDwarqMD7B594C5hCB1zQ==
  • base64url: 22 caracteres, sin relleno, p. ej. 8MDwarqMD7B594C5hCB1zQ

(Los valores anteriores ilustran la forma; tu salida real difiere en cada pulsación porque los bytes son aleatorios nuevos.) Sube a 32 bytes para una sal o clave de 256 bits y las longitudes crecen de forma determinista: 64 caracteres hex, 44 caracteres base64, 43 caracteres base64url. Esa relación fija entre conteo de bytes y longitud codificada es una forma rápida de comprobar que generaste el tamaño que querías.

Preguntas frecuentes#

¿Una sal necesita ser secreta?#

No. El propósito de una sal es la singularidad: asegura que hashear la misma contraseña dos veces produzca resúmenes distintos. Se almacena junto al hash en texto plano, y eso no debilita el esquema. Lo que debe permanecer secreto es la clave en HMAC o la contraseña en el cifrado, no la sal.

¿Cuántos bytes debo generar?#

16 bytes (128 bits) es el estándar para sales de contraseña y la mayoría de los tokens: hace que las colisiones accidentales sean prácticamente imposibles. Para tokens de sesión o cualquier cosa que quieras que dure mucho frente a un atacante bien financiado, 32 bytes (256 bits) es un margen holgado. Más allá de eso suele ser matar moscas a cañonazos salvo que un protocolo concreto lo requiera.

¿Cuál es la diferencia entre base64 y base64url?#

Ambos codifican los mismos bytes, pero base64 usa + y /, que rompen URL y nombres de archivo, y rellena con =. base64url los sustituye por - y _ y elimina el relleno, así el resultado puede colocarse directamente en una ruta de URL, una cadena de consulta o un nombre de archivo sin escapar. Usa base64url para JWTs, URLs firmadas y tokens opacos; usa base64 plano cuando la salida se quede dentro de campos de datos.

¿Puedo usarlo como clave de API?#

Sí. Genera 32 bytes en base64url y tienes un token de 43 caracteres con 256 bits de entropía: más que suficiente para una clave de API o un token bearer de larga duración. Solo asegúrate de copiarlo de inmediato, porque el valor se genera localmente y no puede recuperarse después.