Generador de cadena aleatoria

Genera cadenas alfanuméricas o hex con getRandomValues.

{{ randomString.message }}

{{ t("randomStrMaxLen") }}

Descripción

Los ordenadores son máquinas deterministas: dado el mismo estado inicial, ejecutan exactamente las mismas operaciones y producen exactamente los mismos resultados. Esto es una gran virtud para la fiabilidad y la depuración, pero un problema serio cuando se necesita aleatoriedad. La solución histórica fue el generador de números pseudoaleatorios (PRNG): un algoritmo que, dado un número inicial llamado semilla, produce una secuencia que parece aleatoria pero es completamente determinista. El Generador Lineal Congruencial (LCG), formalizado por D. H. Lehmer en 1948, fue el estándar durante décadas: tomar el número anterior, multiplicarlo por una constante, añadir otro valor y tomar el resto de una división modular. Simple, rápido, implementable en pocas líneas. El problema es que los LCG tienen patrones predecibles con suficiente salida — en 1993, el juego en línea Netrek fue comprometido porque su generador pseudoaleatorio de tokens de autenticación era un LCG con parámetros conocidos y fáciles de revertir.

La Web Crypto API, disponible en todos los navegadores modernos, resuelve el problema con `window.crypto.getRandomValues()` — una función que solicita entropía real al sistema operativo. Esa entropía proviene de fuentes físicas de ruido: movimientos del ratón, tiempos de disco, interrupciones de hardware, actividad de red. Linux acumula esta entropía en un pool especial y la pone a disposición de los procesos. El `Math.random()` de JavaScript — a pesar de usar algoritmos modernos como xorshift128+ en el motor V8 — no es adecuado para fines de seguridad, porque su semilla puede ser predecible según la implementación y no está protegida contra el análisis. Para cualquier cadena destinada a autenticación, tokens de sesión, IDs únicos o tokens CSRF, `getRandomValues()` es el estándar correcto.

En la práctica, las cadenas aleatorias son necesarias en más lugares de los que la mayoría de los desarrolladores percibe. Los IDs de recursos en las APIs REST deben ser únicos y preferiblemente no secuenciales — los IDs secuenciales exponen el volumen de datos y facilitan la enumeración por parte de atacantes. Los tokens de acceso a la API deben ser suficientemente largos para resistir la fuerza bruta: una cadena hexadecimal de 32 bytes tiene 256 bits de entropía, que es hoy el mínimo aceptable para secretos. Contraseñas temporales para flujos de restablecimiento de acceso. Nombres únicos de archivos temporales para evitar condiciones de carrera. La paradoja del cumpleaños tiene implicaciones prácticas aquí: para IDs alfanuméricos de 8 caracteres (62 símbolos posibles), la probabilidad de colisión empieza a ser significativa con alrededor de 218.000 IDs generados. Para 16 caracteres, el número asciende a 14.000 millones. Esta herramienta usa `getRandomValues()` y admite longitud, alfabeto y codificación configurables.

Detalle técnico

Ideas claras antes de usar la herramienta

  • ¿Para qué sirve esta herramienta?: Funciona por completo en tu navegador: sirve para validar, formatear o convertir datos en el día a día.
  • ¿Se envían mis datos a algún servidor?: El procesamiento es local con JavaScript. No almacenamos lo que pegas en los campos de texto.
  • ¿Puedo usarlo con datos reales en producción?: Úsalo bajo tu responsabilidad. Para secretos (contraseñas, tokens), prefiere entornos controlados y políticas internas. Recuerda de revisar los contenidos generados. Nunca confies ciegamente en cosas que ves en internet.

Fragmento corto para probar

  • Debajo aparece también el ejemplo largo en "Fragmentos de Código"; pega esta versión corta: Uso — IDs de teste: 16 caracteres [a-zA-Z0-9]

Guía de la herramienta

  • Qué es una cadena aleatoria Secuencia impredecible de símbolos de un alfabeto elegido.

  • Qué hace la herramienta Genera longitud configurable con crypto.getRandomValues, modos alfanumérico, hexadecimal o conjunto personalizado.

  • Por qué usarla IDs de prueba y datos de ejemplo. Para contraseñas con reglas de símbolos, usa también el generador de contraseñas del sitio.

Fragmentos de Código

Ejemplo de código
IDs de teste: 16 caracteres [a-zA-Z0-9]

Uso

IDs de teste: 16 caracteres [a-zA-Z0-9]

Preguntas frecuentes

¿Para qué sirve esta herramienta?

Funciona por completo en tu navegador: sirve para validar, formatear o convertir datos en el día a día.

¿Se envían mis datos a algún servidor?

El procesamiento es local con JavaScript. No almacenamos lo que pegas en los campos de texto.

¿Puedo usarlo con datos reales en producción?

Úsalo bajo tu responsabilidad. Para secretos (contraseñas, tokens), prefiere entornos controlados y políticas internas. Recuerda de revisar los contenidos generados. Nunca confies ciegamente en cosas que ves en internet.