Codificador de mensajes ocultos
Esconde una nota secreta dentro de una frase normal. El mensaje se convierte en caracteres invisibles de ancho cero, así que el texto se ve exactamente igual, pero cualquiera que lo pegue aquí puede revelarlo. Añade una contraseña para cifrar la parte oculta. Todo funciona en tu navegador.
Última actualización:
Los caracteres de ancho cero sobreviven al copiar y pegar en la mayoría de las apps de chat, correos y documentos, pero algunos sitios y los SMS los eliminan. Sin contraseña el mensaje está oculto, no cifrado.
Cómo usar Codificador de mensajes ocultos
- Escribe el texto de cobertura: la frase normal que todos verán.
- Escribe tu mensaje secreto y, si quieres, una contraseña que necesitará quien lo lea.
- Pulsa Ocultar mensaje y copia el resultado. Se ve idéntico al texto de cobertura.
- Envía o publica el texto en cualquier lugar que conserve los caracteres Unicode, como la mayoría de las apps de chat, el correo y los documentos.
- Para leerlo, abre Revelar, pega el texto, introduce la contraseña si se usó y pulsa Revelar mensaje.
Cómo funciona la esteganografía de texto con ancho cero
La esteganografía oculta el hecho mismo de que exista un mensaje, mientras que el cifrado oculta lo que dice. Este codificador usa cuatro caracteres Unicode que no ocupan espacio y no dibujan nada en pantalla:
| Carácter | Punto de código | Par de bits |
|---|---|---|
| Espacio de ancho cero | U+200B | 00 |
| No unidor de ancho cero | U+200C | 01 |
| Unidor de ancho cero | U+200D | 10 |
| Unidor de palabras | U+2060 | 11 |
Tu mensaje se convierte en bytes UTF-8. Cada byte se divide en cuatro pares de 2 bits, y cada par se convierte en un carácter invisible, así que un byte cuesta cuatro caracteres. Se añaden una pequeña cabecera (byte marcador, indicadores y longitud) y una suma de verificación Fletcher-16, que permiten al decodificador encontrar el mensaje de forma fiable y detectar daños. Luego el bloque invisible se inserta después de la primera palabra, se reparte entre palabras o se añade al final del texto de cobertura.
Oculto vs. cifrado
- Sin contraseña el mensaje solo está escondido. Cualquiera que pegue el texto en un decodificador de ancho cero puede leerlo.
- Con contraseña los bytes ocultos se cifran con AES-256-GCM antes de convertirse en caracteres invisibles. La clave se deriva con PBKDF2-SHA256 (150,000 iteraciones) y una sal aleatoria de 16 bytes; cada vez se usa un IV aleatorio de 12 bytes. Se detecta una contraseña incorrecta o cualquier cambio en los datos.
- El cifrado añade 44 bytes (sal, IV y etiqueta de autenticación), es decir, 176 caracteres invisibles extra.
Consejos para mensajes ocultos fiables
- Prueba primero la plataforma: envíate el texto a ti mismo, cópialo de vuelta y pégalo en la pestaña Revelar.
- Pide a quien lo lea que copie el texto completo. Con Repartidos entre palabras, copiar solo parte de la frase pierde parte del mensaje.
- Mantén los secretos cortos. Los límites de longitud (por ejemplo, en las biografías de redes sociales o en los SMS) también cuentan los caracteres invisibles.
- Usa el botón Eliminar caracteres ocultos de la pestaña Revelar para limpiar el texto que recibiste antes de reutilizarlo, por ejemplo en código, nombres de archivo o formularios donde los caracteres invisibles causan errores.
Preguntas frecuentes
¿Cómo se puede ocultar un mensaje en un texto normal?
Unicode incluye caracteres sin ancho que no dibujan nada, como el espacio de ancho cero (U+200B), el no unidor de ancho cero (U+200C), el unidor de ancho cero (U+200D) y el unidor de palabras (U+2060). Esta herramienta convierte tu mensaje en bytes y escribe cada byte como cuatro de estos caracteres invisibles (dos bits cada uno), y luego los inserta en el texto de cobertura. El texto se ve igual, pero lleva datos extra.
¿Es seguro el mensaje oculto?
Sin contraseña solo está oculto, no cifrado: cualquiera que lo sospeche y use un decodificador de ancho cero puede leerlo. Con contraseña, los bytes ocultos se cifran con AES-256-GCM usando una clave derivada de la contraseña con PBKDF2-SHA256 (150,000 iteraciones), así que solo alguien con la contraseña puede leerlo.
¿Dónde sobrevive el mensaje oculto?
Sobrevive al copiar y pegar en la mayoría de los lugares que conservan el texto Unicode tal cual, por ejemplo muchas apps de chat, el correo, los procesadores de texto, las apps de notas y los archivos .txt. Algunos sitios web, redes sociales, pasarelas de SMS y limpiadores de texto eliminan los caracteres de ancho cero o limitan la longitud, lo que destruye el mensaje. Prueba con la pestaña Revelar antes de confiar en una plataforma.
¿Por qué el texto tiene más caracteres de los que veo?
Cada byte del secreto se convierte en cuatro caracteres invisibles, así que un mensaje de 40 caracteres añade unos 170 caracteres invisibles (más unos 180 adicionales si se usa contraseña). Los contadores de caracteres y los límites de longitud los cuentan, aunque no se muestre nada.
¿Puedo encontrar caracteres ocultos en un texto que recibí?
Sí. Pégalo en la pestaña Revelar. La herramienta decodifica los mensajes creados con este codificador y también informa de cualquier otro carácter invisible que encuentre, como espacios de ancho cero, unidores o marcas de orden de bytes, y puede eliminarlos todos.
¿Se envía mi texto a algún sitio?
No. La codificación, el cifrado y la decodificación se hacen por completo en tu navegador con JavaScript estándar y la API WebCrypto. No se sube ni se guarda nada.
¿Por qué algunos emojis contienen unidores de ancho cero?
Muchos emojis, como los de familia o profesiones, se forman con varios emojis unidos mediante unidores de ancho cero U+200D. El decodificador ignora estos unidores sueltos, así que los emojis del texto de cobertura no rompen el mensaje oculto.
¿Se prueban todas las herramientas de FreeToolCabin para comprobar su calidad y precisión?
Sí. Cada herramienta del sitio pasa pruebas automáticas en navegadores reales para comprobar que el resultado es correcto y que no hay errores. Si encuentras un fallo o tienes una sugerencia, escríbenos a [email protected] y lo revisaremos.