Si programas una API, una app con inicio de sesión o una integración de pagos, tarde o temprano necesitas crear un token: una cadena que nadie pueda adivinar. Este generador de tokens online la crea en tu navegador, de 8 a 128 caracteres, con prefijo si lo quieres. Sirve para una clave sk_test_ de pruebas, un identificador de sesión o un código numérico de 6 dígitos como el que tu banco te manda por SMS antes de autorizar una transferencia. Generas uno o hasta 50 de golpe, los copias y listo.
Qué es un generador de tokens, en un párrafo
Un token es una cadena imposible de adivinar que un sistema usa para identificar algo: una petición a una API, una sesión, un enlace mágico de inicio de sesión, un restablecimiento de contraseña. El generador de tokens crea esas cadenas con entropía criptográficamente segura: cada carácter sale de crypto.getRandomValues, el generador seguro del navegador, del tipo que OWASP recomienda para los identificadores de sesión. Tú eliges la longitud, el juego de caracteres y un prefijo opcional al estilo de los grandes proveedores; la herramienta te da un token o un lote de hasta cincuenta.
No sustituye al Generador de contraseñas (pensado para contraseñas que escribe una persona, con medidor de seguridad y botón para mostrarlas). Sustituye a abrir una consola de Node y escribir require('crypto').randomBytes(32).toString('hex').
Cómo funciona el generador de tokens de Microapp
Mueve el control deslizante para fijar la longitud (de 8 a 128 caracteres). Elige un juego de caracteres: alfanumérico es la opción universal; hex para cadenas que van bien en URL; base64-url, el alfabeto que usan los JWT y los tokens de OAuth; numérico para códigos de verificación tipo SMS; y hex en mayúsculas cuando necesitas HEX legible por máquinas. Añade si quieres un prefijo como tk_, sk_live_ o pk_ (hasta 16 caracteres): Stripe popularizó la costumbre y las APIs modernas la usan porque el prefijo te dice de un vistazo qué tipo de token es. Ajusta la cantidad si necesitas varios tokens a la vez. Pulsa Generar y copia los tokens uno a uno o todo el lote.
Cada byte de aleatoriedad sale de crypto.getRandomValues. No hay ningún Math.random en el camino: ese sería lo bastante predecible como para romperlo por fuerza bruta en segundos. Nada sale de tu navegador; los tokens que ves son la única copia que existe.
sk_test_, longitud 24, alfanuméricos. Resultado: sk_test_aB8cD9eF1gH2iJ3kL4mN5oP6 ×20. Mételos en tu tabla de fixtures: con unos 1043 valores posibles por token, la probabilidad de que dos coincidan es despreciable.
Qué significa de verdad la longitud de un token
La seguridad de un token no depende de la longitud en sí, sino de la entropía. Un token alfanumérico de 32 caracteres tiene 6232 valores posibles, unos 1057. Un atacante que probara un billón de tokens por segundo tardaría del orden de 1037 años en recorrerlos todos, muchísimo más que la edad del universo.
Para la mayoría de los usos, 32 caracteres alfanuméricos es el punto justo: lo bastante largo para no poder adivinarse, lo bastante corto para registrarlo en un log sin llenar la línea, y fácil de copiar con un triple clic. Subir a 64 no añade seguridad real: añade almacenamiento y ruido visual. Por debajo de 16, el margen se reduce rápido: 8 caracteres alfanuméricos son unos 2×1014 valores, alcanzables para un atacante con recursos si no hay límite de intentos.
Qué juego de caracteres elegir
| Juego de caracteres | Ideal para | Por qué |
|---|---|---|
| Alfanumérico | Claves de API, identificadores de sesión | La opción universal: funciona en todas partes, no hay que escapar nada |
| Hex (minúsculas) | URLs, nombres de archivo | Seguro en URLs, sin confusión entre mayúsculas y minúsculas |
| Base64-url | JWT, tokens de OAuth | Alfabeto más amplio = más entropía por carácter |
| Numérico | Códigos de verificación por SMS | Fácil de escribir en un teclado numérico |
| Hex en mayúsculas | Logs de máquinas, IDs de base de datos | Legible en fuente monoespaciada; estándar en muchos sistemas |
Para qué sirve el prefijo
Un prefijo como tk_, sk_live_ o ghp_ le dice a quien encuentre el token en un log, en el control de versiones o en un mensaje de Slack qué tipo de secreto es. Stripe empezó con esta práctica: sk_ significa clave secreta, pk_ clave publicable, y _live_ frente a _test_ indica el entorno. GitHub la adoptó (ghp_, gho_, ghs_). Slack también (xoxb-, xoxp-).
Es un detalle pequeño que evita un caos enorme cuando hay un incidente: si alguien sube por error un token a un repositorio público, el prefijo le dice al equipo de seguridad en segundos si tiene que rotar una clave de pagos de producción o solo un token de pruebas. Vale la pena por cuatro caracteres más.
Errores frecuentes
Usar Math.random. Tienta porque es más corto de escribir. Es catastrófico porque Math.random es un generador pseudoaleatorio determinista que parte del estado del sistema: con suficientes muestras, un atacante puede predecir el siguiente valor. Nunca generes tokens con Math.random. Por eso el generador de tokens usa solo crypto.getRandomValues.
Guardar los tokens en texto plano. Los tokens funcionan como contraseñas: dan acceso. Guárdalos con hash en el servidor (con SHA-256, bcrypt o Argon2), envíalos al cliente una sola vez al crearlos y deja que el cliente guarde el valor. Si te roban la base de datos, los tokens con hash no le sirven al atacante.
Sin caducidad. Un token que nunca caduca es un riesgo permanente. Ponle siempre una fecha de caducidad (el claim exp en los JWT, o un TTL en la fila de la base de datos) y obliga a renovarlo cada cierto tiempo.
Reutilizar el mismo secreto entre entornos. Los tokens de producción deben ser distintos de los de staging, y estos distintos de los de desarrollo. La convención del prefijo ayuda: si tu entorno de desarrollo genera por error un token sk_live_, salta a la vista.
Herramientas relacionadas
Para contraseñas que escribe una persona, con medidor de seguridad, usa el Generador de contraseñas. Para identificadores únicos (UUID) que sirven de clave primaria en bases de datos, el Generador de UUID es lo que buscas. Para sacar el hash de un token antes de guardarlo, el Generador SHA-256 cubre casi todos los casos. Para códigos de un solo uso (TOTP / 2FA), mira el Generador de OTP. Y para tokens firmados con contenido (JWT), usa el Generador de tokens JWT.