# Generador aleatorio seguro

Genera material de clave aleatorio criptográficamente seguro guiado por un presupuesto de entropía — pide N bits de entropía y obtén salida hex/base64/base64url. También soporta cadenas con alfabeto personalizado vía crypto.randomInt (muestreo por rechazo interno, sin sesgo de módulo). Para cualquier secreto/clave/token, usa esto en lugar de herramientas basadas en Math.random.

> Página canónica: https://elysiatools.com/es/tools/secure-random-generator

- **Categoría:** Security

- **Palabras clave:** aleatorio, aleatorio seguro, CSPRNG, clave, generación, entropía, hex, base64, seguridad

## Descripción general

Esta herramienta genera **material de clave aleatorio criptográficamente seguro**. A diferencia de los generadores existentes de cadenas y contraseñas (que usan `Math.random()` y no sirven para secretos), esta herramienta está guiada por entropía y respaldada por CSPRNG.

**Entrada guiada por entropía.** Especificas una entropía objetivo en *bits* (por defecto 256, paso 8) — la seguridad que quieres — y la herramienta deriva el número de bytes (`bytes = ceil(bits/8)`) por ti. Este es el modelo mental correcto para claves: un secreto JWT HS256 necesita 256 bits de entropía sin importar cuántos caracteres lo representen. No pienses "cuántos caracteres", piensa "cuánta seguridad".

**Dos ramas de salida:**

1. **Codificación de bytes** (por defecto — deja Alfabeto Personalizado vacío). Genera `ceil(entropyBits/8)` bytes aleatorios con `crypto.randomBytes()` y renderiza el mismo material en **tres codificaciones lado a lado** — hex, base64, base64url — para que copies la que tu consumidor espere. Cada byte aporta 8 bits de entropía, así que la entropía entregada siempre es la solicitada.

2. **Alfabeto personalizado** (rellena Alfabeto Personalizado). Muestrea `crypto.randomInt(tamañoAlfabeto)` por carácter — muestreo por rechazo interno de Node, **sin sesgo de módulo**, sin bucle de rechazo manual. La entropía real es `longitud × log₂(tamañoAlfabeto)`, que puede ser *menor* de lo solicitado (p. ej. alfabeto de 32 símbolos × 10 caracteres = 50 bits, no 256); la herramienta te avisa en rojo cuando ocurre, porque una cadena corta con alfabeto personalizado puede ser mucho más débil de lo que parece.

**¿Por qué tres codificaciones lado a lado?** Una clave de 256 bits son 64 caracteres hex, ~44 base64, o 43 base64url. Distintos sistemas esperan distintos formatos; mostrar los tres te deja elegir correctamente sin volver a ejecutar.

Casos de uso: claves AES-256, claves HMAC, secretos de firma JWT, API keys, secretos de sesión, cualquier valor que un atacante no deba poder adivinar. `crypto.randomBytes()` y `crypto.randomInt()` toman del CSPRNG del SO — nunca `Math.random()`.

## Entradas

- **Entropía (bits)** (number): e.g. 256
- **Codificación de salida** (select)
- **Alfabeto personalizado (opcional)** (text): e.g. abcdefghijklmnopqrstuvwxyz (leave empty for byte encoding)
- **Longitud personalizada** (number): e.g. 32
- **Cantidad** (number): e.g. 1

## Cuándo usarlo

- Cuando necesites generar claves criptográficas fuertes como secretos JWT, claves AES o firmas HMAC con un nivel de entropía garantizado.
- Al crear identificadores únicos, tokens de API o secretos de sesión que deban ser imposibles de adivinar por un atacante.
- Cuando requieras cadenas aleatorias con un alfabeto personalizado sin introducir sesgos estadísticos o de módulo en la distribución de caracteres.

## Cómo funciona

- Defines la entropía objetivo en bits, a partir de la cual la herramienta calcula automáticamente la cantidad de bytes necesarios.
- Si no usas un alfabeto personalizado, el sistema genera bytes aleatorios usando el CSPRNG del sistema operativo y los codifica en hex, base64 y base64url de forma simultánea.
- Si especificas un alfabeto personalizado, se realiza un muestreo por rechazo interno sin sesgo de módulo para construir la cadena con la longitud indicada.
- La herramienta evalúa la entropía real resultante y muestra una advertencia visual si el nivel de seguridad real queda por debajo del objetivo solicitado.

## Casos de uso

- Generación de secretos de firma para tokens JWT (JSON Web Tokens) usando HS256 o HS512.
- Creación de claves de cifrado simétrico AES-256 en formato hexadecimal o Base64.
- Generación de tokens de API seguros y legibles utilizando alfabetos alfanuméricos personalizados sin caracteres ambiguos.

## Preguntas frecuentes

### ¿Por qué no se debe usar Math.random() para generar claves?

Math.random() no es criptográficamente seguro y sus secuencias de números pueden ser predichas por un atacante.

### ¿Qué diferencia hay entre Base64 y Base64URL?

Base64URL reemplaza los caracteres '+' y '/' por '-' y '_', y elimina el relleno '=', haciéndolo seguro para URLs.

### ¿Qué es el sesgo de módulo y cómo lo evita esta herramienta?

Es la distribución desigual de caracteres al usar el operador residuo; se evita usando muestreo por rechazo interno con crypto.randomInt.

### ¿Cómo se calcula la entropía de un alfabeto personalizado?

Se calcula multiplicando la longitud de la cadena por el logaritmo en base 2 del tamaño del alfabeto.

### ¿Cuánta entropía se recomienda para un secreto de producción?

Se recomienda un mínimo de 128 bits para tokens estándar y 256 bits para claves de cifrado simétrico o firmas JWT.

## Herramientas relacionadas

- [Generador y Verificador Ed25519 / X25519](https://elysiatools.com/es/tools/ed25519-x25519-keygen-signature-verifier): Genera claves Ed25519 o X25519 y admite firma y verificacion de mensajes con Ed25519
- [Generador de hash de texto](https://elysiatools.com/es/tools/text-hash-generator): Calcula MD5, SHA-1, SHA-256, SHA-512 y CRC-32 de cualquier texto de una vez. Devuelve hex y Base64 sobre la codificación UTF-8.
- [Generador de firma digital](https://elysiatools.com/es/tools/digital-signature-generator): Firma un mensaje con una clave privada o verifica una firma con una clave pública — soporta RSA-PSS (SHA-256), ECDSA (P-256) y Ed25519. Criptografía puramente local (Node crypto.createSign/createVerify), sin red. Pega una clave PEM para firmar o verificar una firma base64. Esta herramienta firma/verifica; no genera pares de claves.
- [Generador de PKCE Code Verifier y Challenge](https://elysiatools.com/es/tools/pkce-code-verifier-generator): Genera, valida y verifica pares code_verifier / code_challenge PKCE (RFC 7636) de OAuth2 / OIDC. Tres modos: (1) generar un par nuevo a partir de bytes aleatorios criptográficos (256/384/512/768 bits), (2) auditar un verifier existente frente al RFC — longitud (43–128), charset \[A-Za-z0-9-._~\] y ≥256 bits de entropía, y (3) verificar un par recomputando BASE64URL(SHA256(verifier)). Opcionalmente construye la URL completa de autorización y el cuerpo del intercambio de token. Complementa al nonce-genérico (que solo emite el par) con auditoría de cumplimiento RFC y verificación de pares.
- [Cifrado / Descifrado RSA](https://elysiatools.com/es/tools/rsa-encrypt-decrypt): Cifra texto con una clave pública RSA o descifra el texto cifrado con la clave privada correspondiente, usando padding OAEP (SHA-1 o SHA-256). Maneja mensajes largos por bloques. Las claves y datos se quedan en local. No se ofrece PKCS#1 v1.5 (Node lo deshabilita para descifrar por ataques Bleichenbacher).
- [Suma de comprobación CRC32](https://elysiatools.com/es/tools/crc32-checksum): Calcula la suma CRC32 (polinomio IEEE 802.3) de cualquier texto o bytes. Salida en hex, decimal o binario. Acepta texto plano (UTF-8) o bytes vía hex/base64.
- [Generador de Data URI](https://elysiatools.com/es/tools/data-uri-generator): Convierte archivos en Data URIs (Base64 o porcentaje-codificado) para incrustar imágenes, fuentes y recursos directamente en HTML, CSS o Markdown
- [Comparador de algoritmos hash](https://elysiatools.com/es/tools/hash-algorithm-comparator): Aplica MD5, SHA-1, SHA-256, SHA-512, BLAKE2b y BLAKE3 a la misma entrada y compáralos lado a lado: longitud de salida, digest hex/Base64, estado de seguridad (roto/moderno) y benchmark de velocidad relativa. Útil para enseñanza, elegir algoritmo o verificar checksums.

## Ejemplos

- [Muestras MP3 Sin Derechos de Autor](https://elysiatools.com/es/samples/mp3-samples): Colección de muestras de audio sin derechos de autor para pruebas y desarrollo, incluyendo sonidos de la naturaleza, música de meditación y audio ambiental
- [Ejemplos de Procesamiento de Imágenes Android Java](https://elysiatools.com/es/samples/android-image-processing-java): Ejemplos de procesamiento de imágenes Android Java incluyendo lectura/escritura, escalado y conversión de formato
- [Ejemplos de Procesamiento de Imágenes Android Kotlin](https://elysiatools.com/es/samples/android-image-processing-kotlin): Ejemplos de procesamiento de imágenes Android Kotlin incluyendo lectura/escritura, escalado y conversión de formato
- [Ejemplos de Procesamiento de Imágenes Web Python](https://elysiatools.com/es/samples/web-image-processing-python): Ejemplos de procesamiento de imágenes Web Python usando PIL/Pillow incluyendo lectura, guardado, redimensionamiento y conversión de formato

## Contenido relacionado

- [Herramientas de flujos de tokens, sesiones y 2FA](https://elysiatools.com/es/hubs/token-session-and-2fa-workflows): Depura flujos reales de inicio de sesion con generadores de PKCE y nonce, inspeccion de JWT y JWK, verificacion HMAC, pruebas de OTP y TOTP, e identificadores seguros reunidos en un solo hub.
- [Herramientas de conversión de texto, codificación y normalización](https://elysiatools.com/es/hubs/text-convert): Compara conversión de mayúsculas y minúsculas, conversión de ancho de caracteres, conversión de codificación, manejo de quoted-printable y normalización de texto en un solo hub.
- [Herramientas de Text](https://elysiatools.com/es/hubs/text-utility): Explora 33 herramientas de text para flujos de utility y encuentra utilidades cercanas con rapidez.
- [Herramientas de análisis de texto, legibilidad e inspección de contenido](https://elysiatools.com/es/hubs/text-analyze): Compara estadísticas de texto, detección de idioma, legibilidad, análisis de sentimiento, revisión de moderación y análisis de patrones en un solo hub.
