Cómo se usa
- Indica la Longitud y elige en Unidad si cuenta Bytes de datos aleatorios o Caracteres Base64. Para una clave, usa bytes: 32 bytes equivalen a una clave de 256 bits.
- Indica en Cantidad cuántas cadenas necesitas y elige el Separador entre ellas: Salto de línea, Coma o Espacio.
- Elige la variante Estándar o Segura para URL. Con la unidad de bytes también puedes desactivar el Relleno si el sistema de destino no espera signos =.
- Haz clic en Generar para obtener valores nuevos y, después, en Copiar todo o Descargar para guardar la lista.
Bytes, caracteres y entropía
La seguridad de una cadena aleatoria se mide en bits de entropía. Cada byte aleatorio aporta 8 bits, así que 16 bytes dan 128 bits y 32 bytes, 256 bits. Base64 solo cambia la forma de escribir esos bytes: cada carácter lleva 6 bits y cada 3 bytes se convierten en 4 caracteres. La herramienta muestra la entropía de cada cadena para que puedas comprobarla de un vistazo.
Con la unidad de bytes, la salida se decodifica exactamente en ese número de bytes aleatorios, que es lo que necesitan las claves y los secretos. Con la unidad de caracteres, obtienes un número exacto de caracteres, cada uno elegido de manera uniforme entre los 64 del alfabeto; úsala cuando un sistema pida un token de longitud fija y lo guarde como texto.
| Bytes | Caracteres Base64 | Entropía | Uso habitual |
|---|---|---|---|
| 12 | 16 | 96 bits | Nonce (IV) de AES-GCM |
| 16 | 24 (22 sin relleno) | 128 bits | Sales, tokens de sesión y CSRF, claves AES-128 |
| 32 | 44 (43 sin relleno) | 256 bits | Claves AES-256 y HMAC-SHA256, secretos HS256, claves de API |
| 64 | 88 (86 sin relleno) | 512 bits | Claves HMAC-SHA512, secretos HS512 |
Dónde se usan los valores Base64 aleatorios
- Secretos JWT. RFC 7518 exige que la clave HMAC sea al menos tan larga como la salida del hash: 32 bytes para HS256, 48 para HS384 y 64 para HS512. Algunas bibliotecas usan la cadena del secreto tal cual y otras la decodifican antes desde Base64, así que comprueba qué espera la tuya. El decodificador JWT verifica firmas de HS256 a HS512 con cualquiera de los dos tipos de secreto, y el generador HMAC acepta la clave como texto, hexadecimal o Base64.
- Claves de aplicación. Laravel, por ejemplo, guarda una clave de cifrado de 32 bytes en su archivo
.envcomoAPP_KEY=base64:..., el mismo formato que una cadena de 32 bytes generada con esta herramienta. - Secrets de Kubernetes. Los valores dentro de
datadeben ser Base64 estándar con relleno. Una cadena generada en modo bytes, con la variante Estándar y el relleno activado, puede ir ahí directamente, y el Pod recibe los bytes aleatorios sin procesar. Si la aplicación espera el propio texto Base64, colócalo enstringData. - Tokens en URL. Los enlaces para restablecer contraseñas, los códigos de invitación y otros tokens que viajan en URL deben usar la variante segura para URL, que sustituye
+y/por-y_. Consulta Base64URL para más detalles.
Por qué crypto.getRandomValues y no Math.random
Math.random() es un generador rápido de uso general. Su salida no está pensada para ser impredecible y, en algunos motores, el estado interno se puede reconstruir a partir de unos pocos valores. Esta herramienta usa crypto.getRandomValues(), un generador criptográficamente seguro que obtiene su semilla del sistema operativo, el mismo tipo de fuente que hay detrás de openssl rand y del módulo secrets de Python. Los valores se crean en tu dispositivo y nunca se envían ni se almacenan.
Generar Base64 aleatorio en código
# Shell: 32 bytes aleatorios en Base64 (44 caracteres)
openssl rand -base64 32
head -c 32 /dev/urandom | base64
# Python
import base64, secrets
base64.b64encode(secrets.token_bytes(32)).decode()
secrets.token_urlsafe(32) # seguro para URL, sin relleno, 43 caracteres
// Node.js
const crypto = require('crypto');
crypto.randomBytes(32).toString('base64');
crypto.randomBytes(32).toString('base64url'); // seguro para URL, sin relleno
// Navegador
const bytes = crypto.getRandomValues(new Uint8Array(32));
btoa(String.fromCharCode(...bytes));
Preguntas frecuentes
¿Qué longitud debe tener una clave o un secreto aleatorio?
16 bytes (128 bits) bastan para valores que solo necesitan ser únicos e imposibles de adivinar, como los ID de sesión, los tokens CSRF y las sales. Usa 32 bytes (256 bits) para claves AES-256, claves HMAC-SHA256 y secretos HS256, y 64 bytes para HMAC-SHA512 y HS512.
¿Es lo mismo que openssl rand -base64 32?
= y se decodifica en 32 bytes aleatorios. Los valores en sí, por supuesto, son distintos cada vez.¿Debo usar la unidad de bytes o la de caracteres?
Usa bytes cuando la cadena se vaya a decodificar, como ocurre con las claves de cifrado y los Secrets de Kubernetes. Usa caracteres cuando un sistema necesite un token de longitud exacta y use el texto tal cual. Solo está garantizado que una cadena generada con la unidad de caracteres se decodifique sin errores si su longitud es múltiplo de 4.
¿Cuándo necesito la variante segura para URL?
/ divide las rutas de las URL y + se convierte en un espacio en las cadenas de consulta con codificación de formulario. El Base64 seguro para URL usa - y _ en su lugar y suele escribirse sin relleno.¿Los valores generados se guardan o se envían a algún sitio?
No. Se generan con JavaScript en tu navegador, nunca se transmiten y desaparecen al salir de la página. En cuanto uses uno como secreto real, guárdalo en un gestor de contraseñas o en un almacén de secretos, no en mensajes de chat ni en tickets.