Cómo generar Base64 aleatorio
- Ajusta Bytes a la cantidad de aleatoriedad que necesitas, de 1 a 4096. El valor por defecto de 32 bytes son 256 bits.
- Elige el Formato: Base64, Base64URL (URL-safe, sin relleno) o hex. Para Base64 también puedes marcar Sin relleno (=).
- Ajusta Cantidad para generar varios valores a la vez, hasta 1000, uno por línea.
- Copia la salida, descárgala como archivo de texto o pulsa Generar nuevos para obtener otra tanda. Entropía y Longitud bajo la salida muestran los bits de aleatoriedad y el número de caracteres.
Si necesitas una clave en un formato concreto, como un APP_KEY de Laravel o una clave AES-256, usa uno de los Ajustes predefinidos de arriba; el generador de claves Base64 explica cada uno.
Qué longitud tendrá la salida
La aleatoriedad está en los bytes; el formato solo decide cómo se escriben. Base64 mete 6 bits en cada carácter y hex solo 4, así que hex siempre es más largo para la misma seguridad:
| Bytes | Bits | Base64 | Base64, sin relleno | Base64URL | Hex |
|---|---|---|---|---|---|
| 8 | 64 | 12 | 11 | 11 | 16 |
| 16 | 128 | 24 | 22 | 22 | 32 |
| 24 | 192 | 32 | 32 | 32 | 48 |
| 32 | 256 | 44 | 43 | 43 | 64 |
| 48 | 384 | 64 | 64 | 64 | 96 |
| 64 | 512 | 88 | 86 | 86 | 128 |
Los números de bytes divisibles entre 3 (24, 48) no producen ningún =, así que las columnas con y sin relleno coinciden. Usa Base64URL cuando el valor vaya en una URL, un nombre de archivo o una cookie, porque ahí + y / tendrían que escaparse.
Cuántos bytes usar
- ID únicos, ID de petición, nombres de subidas: 16 bytes (128 bits). Adivinar uno o que colisione no es un problema práctico.
- Tokens de sesión, tokens de API, enlaces para restablecer contraseñas: 32 bytes. El margen extra cuesta unos 20 caracteres.
- Salts para el hash de contraseñas: 16 bytes es la recomendación habitual; el salt no tiene que ser secreto, solo único.
- Datos de prueba: cualquier tamaño, y Cantidad llena un archivo con mil valores de una vez.
Una cadena aleatoria es tan fuerte como su número de bytes. Recortar un valor de 44 caracteres a 20 para que quepa en un campo tira más de la mitad de su entropía, así que elige menos bytes y conserva la salida completa.
Lo mismo en una terminal o en código
Todos estos producen 32 bytes aleatorios en Base64 (secrets.token_urlsafe en el alfabeto URL-safe, sin relleno):
openssl rand -base64 32
head -c 32 /dev/urandom | base64
import base64, secrets
print(base64.b64encode(secrets.token_bytes(32)).decode())
print(secrets.token_urlsafe(32))
En Node.js, crypto.randomBytes(32).toString("base64url") da la forma URL-safe. Una trampa de OpenSSL: por encima de 48 bytes, openssl rand -base64 corta su salida a 64 caracteres por línea, así que un valor de 64 bytes llega en dos líneas. Usa openssl rand 64 | openssl base64 -A para obtener una sola línea, o quita el salto de línea antes de ponerlo en un archivo de configuración. Hay más recetas en las páginas de OpenSSL y Python.
Preguntas frecuentes
¿Este generador aleatorio es lo bastante seguro para contraseñas y tokens?
Sí. Usa crypto.getRandomValues, el generador de números aleatorios criptográficamente seguro del navegador. Evita Math.random() para cualquier cosa secreta: no está diseñado para ser impredecible.
¿Cómo obtengo una cadena Base64 aleatoria de exactamente N caracteres?
Elige N × 3 ÷ 4 bytes. Con un número de bytes divisible entre 3 no hay relleno, así que 33 bytes dan exactamente 44 caracteres y 48 bytes dan 64. Si no, marca Sin relleno (=) y la longitud será ⌈4 × bytes ÷ 3⌉.
¿Pueden salir dos valores generados iguales?
En teoría sí, pero con 16 bytes (128 bits) o más la probabilidad es despreciable: harían falta unos 2^64 valores para que una colisión fuera probable. Por eso 16 bytes es un mínimo habitual para ID aleatorios únicos.
¿Se guardan los valores en algún sitio?
No. Se guardan en la memoria de esta pestaña hasta que los copias o descargas, y la página no puede hacer peticiones de red, salvo las del contador de visitas de Cloudflare. Recarga la página y desaparecen.