ForHosting KIT · Utilidades de desarrollo

Codificador de caracteres de ancho cero

Esconde un secreto dentro de un texto corriente con caracteres Unicode invisibles: «Hi» oculto en «Hello world» se convierte en 18 caracteres de ancho cero que nadie ve, y la decodificación lo revela. Útil para marcas de agua y clases, pero no es cifrado. Gratis en su navegador.

  • Gratis
  • Funciona en su navegador
  • Sin registro
  • Sus datos no salen de su equipo
Úselo desde WebAPIEmailTelegramApp pronto
Si escribe
Clave secreta
Hi
Texto de cobertura
Hello world
Modo de cálculo
encode
Obtiene
Resultado
H‍​‌​​‌​​​​‌‌​‌​​‌ello world
Codificación
zero_width
Longitud del secreto
2
Longitud del texto de cobertura
11

Los caracteres de ancho cero son puntos de código Unicode que no ocupan anchura visible, de modo que el lector corriente no los percibe mientras los analizadores y el copiar y pegar sí conservan los bytes. Este codificador de caracteres de ancho cero transforma una cadena secreta UTF-8 en un flujo de símbolos U+200B y U+200C enmarcado por marcadores U+200D y U+FEFF, e inserta esa carga invisible en el texto de cobertura tras el primer carácter. La decodificación busca el mismo marco, reconstruye bits en bytes y devuelve el secreto original. La herramienta no es cifrado: quien conozca el esquema puede extraer la carga, así que úsela como ayuda didáctica, marca de agua ligera o capa de demostración, no como frontera de secreto.

Cómo la codificación por bits de ancho cero oculta un secreto a simple vista

El texto de cobertura visible sigue siendo legible porque la carga usa solo caracteres de formato con avance de anchura nulo. El codificador convierte primero el secreto a bytes UTF-8 y recorre cada bit de más a menos significativo dentro de cada byte. El bit cero se convierte en U+200B (ZERO WIDTH SPACE) y el bit uno en U+200C (ZERO WIDTH NON-JOINER).

Un marcador de inicio U+200D y uno de fin U+FEFF enmarcan ese flujo de bits para que la decodificación ignore otros caracteres invisibles ajenos del documento y recupere una carga bien definida. Como cada paso es aritmética pura de cadenas y bytes, el mismo secreto y la misma cobertura producen siempre el mismo texto esteganográfico en cualquier tiempo de ejecución.

Ese contrato coincide con las explicaciones de aula sobre esteganografía sin pretender que el canal sea confidencial: ocultar con ancho cero trata de invisibilidad en la interfaz, no de resistencia frente a quien inspecciona puntos de código.

Dónde un codificador de ancho cero aporta valor en productos y docencia

Los talleres de seguridad y privacidad usan un codificador de caracteres de ancho cero para que el alumnado pegue texto esteganográfico en un chat o documento, compruebe que el mensaje sigue limpio a la vista y luego lo decodifique en un segundo paso viendo el mapa de bits en el campo formula. Las canalizaciones de CMS y localización pueden marcar cadenas sintéticas de prueba sin cambiar el diseño renderizado y luego quitar o verificar marcadores en CI llamando a decode.

Como la implementación es análisis puro, sin tokens de modelo ni red saliente, la latencia se mantiene en el suelo analítico y el coste es previsible. Prefiera esta herramienta cuando la tarea sea ocultar y revelar con caracteres de formato Unicode; elija bibliotecas criptográficas reales cuando la confidencialidad ante un ataque sea el requisito. Documente para los usuarios finales que algunas plataformas normalizan o eliminan caracteres de ancho cero al enviar, así que siempre haga un ida y vuelta con decode tras el canal real que le importe.

Demostraciones de esteganografía en clase

Muestre al alumnado cómo bits Unicode invisibles ocultan un secreto breve dentro de frases de cobertura ordinarias y luego revélelo con decode en el mismo módulo determinista.

Marcas de agua ante fugas de borradores

Incruste un identificador de equipo o de ticket como bits de ancho cero en textos de marketing de muestra para atribuir pegados filtrados sin cambiar el diseño visible.

¿Cómo revelo un mensaje oculto?

Llame con mode decode y pase la cadena esteganográfica como text.

¿Qué caracteres Unicode se emplean?

El bit 0 es U+200B, el bit 1 es U+200C, el marcador de inicio es U+200D y el de fin es U+FEFF.

¿Es esto cifrado?

No. La codificación de ancho cero solo oculta bits a lectores casuales. Quien conozca el esquema —o inspeccione puntos de código— puede recuperar la carga. Use criptografía cuando necesite confidencialidad.

¿Cómo oculto un mensaje en un texto?

Escriba el secreto y el texto visible que hará de portada. El secreto se convierte en bits invisibles, enmarcados por una marca de inicio y otra de fin, y se inserta justo después del primer carácter de la portada, que se sigue leyendo igual.

¿Sobrevive el mensaje oculto al copiar y pegar?

Normalmente sí, porque los caracteres invisibles viajan con el texto. Algunas aplicaciones normalizan o eliminan los caracteres de ancho cero al enviar, así que, tras pasar el texto por el canal que le interesa, decodifíquelo una vez para comprobar que el secreto sigue ahí.

Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.

POSThttps://api.kit.forhosting.com/enc/zero-width

¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.

curl -X POST https://api.kit.forhosting.com/enc/zero-width \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"mode":"encode","op":"encode"}'
{
  "mode": "encode",
  "op": "encode"
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "enc.zero_width",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.

Por solicitud$0.002

Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.

HTTPCódigoSignificado
401unauthorizedAPI key ausente o inválida.
402insufficient_balanceEl saldo no cubre el precio de la tarea.
404unknown_typeEl tipo de tarea no existe.
429rate_limitedDemasiadas peticiones. Use el webhook en vez de sondear.

Marcadores inválidos, grupos de bits incompletos o campos ausentes fallan con invalid_input y no se facturan.

Cómo la codificación por bits de ancho cero oculta un secreto a simple vista

La decodificación invierte el camino: localiza el primer marcador de inicio, el siguiente de fin, acepta solo U+200B y U+200C entre ambos, exige que el recuento de bits sea múltiplo de ocho, reensambla bytes y decodifica UTF-8 con decodificador fatal para que flujos corruptos aparezcan como invalid_input en lugar de texto ilegible.

Contrato de entrada, modos, forma de la respuesta y errores

Envíe mode encode o decode. Los campos opcionales que no aplican a un mode simplemente no se usan; el manejador nunca inventa un secreto si faltan marcadores. Encode exige un secret no vacío (alias message o payload, máximo 4096 caracteres) y texto de cobertura no vacío (también aceptado como text, input, value o data, máximo 100000 caracteres). Decode exige text no vacío con una carga enmarcada (alias cover, input, value, data o stego, máximo 200000 caracteres). Los alias de mode incluyen hide y embed para encode, y reveal o extract para decode; el valor por defecto es encode si omite mode. Tras un encode correcto el cuerpo incluye result (cadena esteganográfica), mode, encoding zero_width, secret_length, cover_length, result_length, byte_count, bit_count, zero_width_count, formula y un mensaje breve con cuántos bytes UTF-8 se ocultaron. Tras un decode correcto el cuerpo incluye result y secret (la cadena revelada), mode, encoding, longitudes, recuentos de bits y bytes, zero_width_count, formula y un mensaje de revelación. Campos ausentes, cadenas vacías, mode desconocido, marcadores de inicio o fin ausentes, caracteres que no son bits dentro del marco, marcadores anidados, una longitud de bits que no es múltiplo de ocho o UTF-8 inválido tras armar los bits lanzan invalid_input con un mensaje claro en inglés. Esos fallos no consumen saldo prepago. Mantenga cargas modestas en widgets y fije las cadenas result en las pruebas: los caracteres de ancho cero son Unicode real, así que los ejemplos JSON deben conservarlos exactamente.

Dónde un codificador de ancho cero aporta valor en productos y docencia

Los equipos de QA inyectan marcas de agua invisibles en textos de marketing de muestra para detectar fugas de borradores por rutas de pegado no controladas; una llamada API determinista a $0.002 por ítem correcto sale más barata que levantar un Worker a medida para un script puntual.

Comprobaciones CI de canales de pegado

Codifique un secreto conocido en fixtures, páselos por su editor o integración de chat y decodifique para verificar que los caracteres de ancho cero sobrevivieron al trayecto.

¿Cómo oculto un secreto con caracteres de ancho cero?

Llame con mode encode (u omita mode), envíe secret y cover no vacíos. La API devuelve texto esteganográfico con un marco U+200D…U+FEFF de bits U+200B/U+200C insertado tras el primer carácter de cobertura.

¿Cuánto cuesta el codificador de caracteres de ancho cero?

La herramienta del navegador es gratuita. Las peticiones API usan saldo prepago KIT a $0.002 por llamada correcta; la entrada inválida no se factura.

Ver la documentación completa del KIT →