Random String Generator Preguntas Frecuentes
Generate random alphanumeric strings
¿Cuál es la diferencia entre cadenas aleatorias criptográficamente seguras y estándar?
Las cadenas aleatorias criptográficamente seguras usan generadores de números aleatorios criptográficamente seguros (CSPRNG) como crypto.getRandomValues() o secrets de Python—estos son impredecibles incluso para atacantes. Las cadenas aleatorias estándar usan PRNG como Math.random() que son predecibles y nunca deben usarse para seguridad. Siempre usa CSPRNG para tokens, claves, contraseñas o cualquier cosa relacionada con seguridad.
¿Qué longitud de cadena necesito para seguridad?
Apunta a: tokens de sesión 128-256 bits (22-43 caracteres base64), claves API 256+ bits (43+ caracteres base64), tokens de verificación 64-128 bits con vencimiento, contraseñas 12+ caracteres con complejidad. Mayor entropía = mayor seguridad, pero usabilidad sufre con cadenas excesivamente largas. Equilibra seguridad con casos de uso prácticos y implementa vencimiento/limitación de velocidad para entropía menor.
¿Debo usar base64, hex o alfanumérico?
Base64 es más compacto (6 bits/carácter) pero incluye +/= que pueden causar problemas en URL—usa base64 URL-safe (-_ en lugar de +/). Hex es universal (4 bits/carácter) pero más largo. Alfanumérico equilibra compacidad con legibilidad (5.95 bits/carácter) y funciona en todas partes. Para tokens en URLs: base64 URL-safe. Para visualización: alfanumérico. Para representación de hashes: hex.
¿Cómo genero cadenas aleatorias seguras en JavaScript?
Usa crypto.getRandomValues() con conversión apropiada. Para base64: btoa(String.fromCharCode(...crypto.getRandomValues(new Uint8Array(32)))). Para hex: Array.from(crypto.getRandomValues(new Uint8Array(16))).map(b => b.toString(16).padStart(2, '0')).join(''). Para alfanumérico, genera bytes aleatorios y mapea a conjunto de caracteres. Nunca uses Math.random() para seguridad.
¿Qué son los caracteres confundibles y debo evitarlos?
Los caracteres confundibles lucen similares: 0/O (cero/O mayúscula), 1/l/I (uno/L minúscula/I mayúscula), 2/Z, 5/S, 8/B. Para códigos que los usuarios escriben manualmente (códigos de verificación, PINs), exclúyelos para reducir errores de transcripción. Para tokens auto-copiados o manejados por máquina, la inclusión está bien ya que maximiza entropía. El compromiso depende de si los humanos escribirán la cadena.
¿Con qué frecuencia debo rotar claves API y tokens?
Los tokens de sesión: rotar/vencer después de inactividad (30 minutos) o duración máxima (24 horas). Los tokens de restablecimiento de contraseña: vencer después de 15-60 minutos. Las claves API: rotar cada 90 días o inmediatamente si se sospecha compromiso. Implementa capacidad de rotación sin tiempo de inactividad (permitir múltiples claves activas temporalmente). Los vencimientos regulares limitan daño de fuga de token.