Sin subida, 100% local, sin cuenta

Artículo

Codificar y decodificar datos en privado

Cada día los desarrolladores pegan tokens, cargas útiles y credenciales en páginas de codificación y decodificación. Las más cómodas se ejecutan en un servidor, lo que significa que tus datos salen de tu equipo para una tarea que nunca lo necesitó. Estas cuatro herramientas funcionan por completo en tu navegador, así que los datos se quedan contigo.

Base64: parece revuelto, pero no es secreto

Base64 es una codificación, no un cifrado. Convierte datos binarios en texto capaz de sobrevivir a un copiar y pegar o al tránsito por sistemas que solo manejan caracteres sencillos. Cualquiera que vea la cadena Base64 puede volver a decodificarla al original en un solo paso, de modo que una cadena que contiene una clave de API, un certificado privado o el cuerpo de un correo es totalmente legible para quien la tenga. El riesgo es que ese valor suele esconderse en archivos de configuración, data URL o cabeceras de autenticación y parece oscuro, lo que tienta a pegarlo en el primer decodificador que se encuentra en línea. Ese decodificador recibe el secreto en bruto. Una herramienta que decodifica Base64 de forma local te muestra los bytes originales sin que el valor llegue nunca a un servidor.

Hello! codificado como SGVsbG8h y luego decodificado, mostrando que el Base64 es reversible por cualquiera sin una clave.

Codificación de URL: las cadenas de consulta llevan más de lo que crees

La codificación porcentual permite poner espacios, acentos y caracteres reservados en una URL de forma segura. El texto que codificas o decodificas suele ser una cadena de consulta real de una aplicación, y estas transportan identificadores de sesión, términos de búsqueda, direcciones de correo, destinos de redirección y a veces parámetros firmados. Pegar una URL completa en un codificador remoto entrega todo eso a un tercero de una sola vez, y las cadenas de consulta son justo el tipo de valor que acaba en los registros del servidor. Codificar y decodificar en el navegador significa que la URL se procesa en memoria en tu propio dispositivo y nunca se transmite mientras trabajas con ella.

JWT: la carga útil está firmada, no oculta

Un JSON Web Token consta de tres secciones Base64url unidas por puntos: una cabecera, una carga útil y una firma. La firma demuestra que el token no se ha manipulado, pero no hace nada por ocultar la carga útil, que se decodifica a JSON legible con identificadores de usuario, roles, tiempos de expiración y cualquier reclamación personalizada que añadiera el emisor. Un token válido es además una credencial viva: hasta que caduca, quien lo tenga puede actuar como el usuario. Pegar un token funcional en un decodificador en línea envía una credencial activa a un servidor que no controlas. Un decodificador que analiza el token en tu navegador revela la misma cabecera y la misma carga útil sin que ese token salga nunca de la página.

Las tres partes de un JWT: encabezado legible, payload legible, y una firma que demuestra la integridad sin ocultar nada.

Hashing: la entrada importa más que el resumen

Una función hash convierte cualquier entrada en un resumen de longitud fija, y no puedes invertir el resumen para recuperar la entrada. Esa propiedad hace que el hashing sea útil para verificar la integridad de un archivo o comparar valores sin guardar el original. El truco está en el lado de la entrada: para calcular el hash de una contraseña, un documento o un secreto de configuración, tienes que dar el valor real a la herramienta. Si esa herramienta funciona en un servidor, la entrada sensible viaja hasta allí aunque solo se devuelva el resumen inofensivo. Calcular el hash de forma local mantiene la entrada en tu dispositivo, así obtienes el resumen que necesitas sin exponer aquello que estabas resumiendo.

Codificación Base64: mapeo de bytes y relleno

Base64 traduce bytes de 8 bits a caracteres de 6 bits agrupando tres bytes de entrada (24 bits) en cuatro valores de 6 bits. Cada valor de 6 bits se corresponde con un carácter del alfabeto Base64 (A-Z, a-z, 0-9, +, /). Dado que el proceso requiere entradas divisibles por 24 bits, las entradas cortas se rellenan: un byte restante produce dos caracteres de relleno (==), dos bytes restantes producen uno (=). La variante Base64url, usada en JSON Web Tokens (JWTs), reemplaza + por - y / por _ para que la cadena sea segura en URLs, y elimina por completo el relleno =, ya que los caracteres de relleno pueden causar errores en analizadores de URI estrictos. Reconocer esta distinción es importante al depurar el manejo de tokens: un JWT que parece malformado puede simplemente estar codificado en Base64url en lugar de Base64 estándar.

Firmas JWT: HS256, RS256 y confusión de algoritmos

La seguridad de un JSON Web Token depende por completo de su firma, el tercer segmento separado por puntos. Con HS256 (HMAC-SHA256), el servidor firma la cabecera y el payload codificados en Base64url usando una clave secreta. La función hash SHA-256 proporciona resistencia a colisiones: es computacionalmente inviable producir un payload modificado que genere la misma firma sin conocer la clave secreta. Con RS256, el servidor firma con una clave privada RSA y verifica con una clave pública. Una vulnerabilidad conocida llamada confusión de algoritmos surge cuando una biblioteca de servidor no aplica de forma estricta el tipo de algoritmo esperado. Un atacante puede cambiar el campo alg de la cabecera del token de RS256 a HS256 y firmar el token usando la clave pública del servidor como secreto HMAC, ya que las claves públicas suelen ser accesibles. Decodificar la cabecera del JWT localmente en el navegador permite verificar qué algoritmo está realmente especificado, sin exponer el token activo a sistemas de registro de terceros.

Herramientas en este artículo

Preguntas frecuentes

¿Es Base64 o la codificación de URL una forma de seguridad?

No. Ambas son codificaciones reversibles diseñadas para el transporte seguro de datos, no para protegerlos. Cualquiera que pueda leer la cadena codificada la decodifica al instante, sin clave ni contraseña. Si necesitas mantener un valor confidencial, cífralo con un algoritmo adecuado y gestiona la clave por separado. Trata cualquier valor en Base64 o codificado en porcentaje como si estuviera escrito en texto claro.

¿Por qué importa dónde decodifico un token o calculo el hash de una contraseña?

Porque la entrada es la parte sensible. Un JWT válido es una credencial viva, y la contraseña cuyo hash calculas es el secreto real. Una herramienta basada en servidor recibe esa entrada en bruto antes incluso de devolver un resultado, lo que significa que una copia puede quedar registrada o conservada en un lugar que no ves. Una herramienta que se ejecuta en tu navegador realiza la misma operación en memoria en tu propio equipo, así que el token o la contraseña nunca se envían a ningún sitio.