Codificatore caratteri a larghezza zero
Nasconde un segreto in un testo qualsiasi con caratteri Unicode invisibili: «Hi» inserito in «Hello world» diventa 18 caratteri a larghezza zero che nessuno vede, e la decodifica lo rivela. Utile per filigrane e lezioni, ma non è crittografia. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Chiave segreta
- Hi
- Testo di copertura
- Hello world
- Modalità di calcolo
- encode
- Risultato
- Hello world
- Codifica
- zero_width
- Lunghezza del segreto
- 2
- Lunghezza del testo di copertura
- 11
I caratteri a larghezza zero sono punti di codice Unicode che non occupano larghezza visibile, così il lettore comune non li nota mentre parser e copia-incolla trasportano ancora i byte. La decodifica cerca lo stesso riquadro, ricostruisce i bit in byte e restituisce il segreto originale.
Come la codifica a bit di larghezza zero nasconde un segreto in piena vista
Il codificatore converte prima il segreto in byte UTF-8, poi scorre ogni bit dal più al meno significativo all'interno di ogni byte. Il bit zero diventa U+200B (ZERO WIDTH SPACE) e il bit uno diventa U+200C (ZERO WIDTH NON-JOINER). Poiché ogni passo è pura aritmetica di stringhe e byte, lo stesso segreto e la stessa copertura producono sempre lo stesso testo steganografico su ogni runtime.
Quel contratto allinea le spiegazioni in aula sulla steganografia senza fingere che il canale sia confidenziale: nascondere a larghezza zero riguarda l'invisibilità nell'interfaccia, non la resistenza a un lettore motivato che ispeziona i punti di codice.
Dove un codificatore a larghezza zero crea valore in prodotti e didattica
I workshop di sicurezza e privacy usano un codificatore di caratteri a larghezza zero affinché gli apprendisti incollino testo steganografico in una chat o un documento, verifichino che il messaggio appaia ancora pulito, poi lo decodifichino in un secondo passo vedendo la mappa dei bit nel campo formula. Poiché l'implementazione è pure parse, senza token di modello né rete in uscita, la latenza resta al pavimento analitico e il costo resta prevedibile.
Preferisca questo strumento quando il compito è nascondere e rivelare con caratteri di formato Unicode; scelga vere librerie crittografiche quando la confidenzialità sotto attacco è il requisito. Documenti per gli utenti finali che alcune piattaforme normalizzano o rimuovono i caratteri a larghezza zero in invio, quindi esegua sempre un andata e ritorno con decode dopo il canale reale che Le interessa.
Casi d'uso
Dimostrazioni di steganografia in aula
Mostri agli studenti come bit Unicode invisibili nascondano un breve segreto in frasi di copertura ordinarie, poi lo riveli con decode sullo stesso modulo deterministico.
Filigrane anti-fuga per bozze
Incorpori un id di team o di ticket come bit a larghezza zero in testi di marketing di esempio per attribuire incolli filtrati senza cambiare il layout visibile.
Domande frequenti
Come rivelo un messaggio nascosto?
Chiami con mode decode e passi la stringa steganografica come text.
Quali caratteri Unicode vengono usati?
Il bit 0 è U+200B, il bit 1 è U+200C, il marcatore di inizio è U+200D e quello di fine è U+FEFF.
Si tratta di crittografia?
No. La codifica a larghezza zero nasconde solo bit a lettori occasionali. Usi la crittografia quando Le serve confidenzialità.
Come nascondo un messaggio in un testo?
Scriva il segreto e il testo visibile che farà da copertina. Il segreto diventa una serie di bit invisibili, racchiusi tra un segno di inizio e uno di fine, e viene inserito subito dopo il primo carattere della copertina, che si legge come prima.
Il messaggio nascosto sopravvive al copia e incolla?
Di solito sì, perché i caratteri invisibili viaggiano con il testo. Alcune app normalizzano o eliminano i caratteri a larghezza zero all'invio, quindi, dopo aver fatto passare il testo nel canale che le interessa, lo decodifichi una volta per verificare che il segreto ci sia ancora.
Strumenti correlati
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo stack
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"}'const res = await fetch("https://api.kit.forhosting.com/enc/zero-width", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"mode": "encode",
"op": "encode"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/zero-width",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"mode": "encode",
"op": "encode"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/zero-width", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"mode":"encode","op":"encode"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"mode":"encode","op":"encode"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/zero-width", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Esempio di richiesta
{
"mode": "encode",
"op": "encode"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.zero_width",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
Note tecniche
Questo codificatore di caratteri a larghezza zero trasforma una stringa segreta UTF-8 in un flusso di simboli U+200B e U+200C incorniciato dai marcatori U+200D e U+FEFF, quindi inserisce quel payload invisibile nel testo di copertura dopo il primo carattere. Marcatori non validi, gruppi di bit incompleti o campi assenti falliscono con invalid_input e non vengono addebitati. Lo strumento non è crittografia: chi conosce lo schema può estrarre il payload; lo usi come ausilio didattico, filigrana leggera o strato dimostrativo, non come confine di segretezza.
Come la codifica a bit di larghezza zero nasconde un segreto in piena vista
Il testo di copertura visibile resta leggibile perché il payload usa solo caratteri di formato con avanzamento di larghezza zero. Un marcatore di inizio U+200D e uno di fine U+FEFF incorniciano quel flusso di bit così la decodifica può ignorare altri caratteri invisibili estranei nel documento e recuperare comunque un payload ben definito. La decodifica inverte il percorso: localizza il primo marcatore di inizio, il successivo di fine, accetta solo U+200B e U+200C tra di essi, esige che il conteggio dei bit sia multiplo di otto, riassembla i byte e decodifica UTF-8 con decoder fatale affinché i flussi corrotti emergano come invalid_input invece di testo illeggibile.
Contratto di ingresso, modalità, forma della risposta ed errori
Invii mode encode o decode. Tali fallimenti non consumano il saldo prepagato. Encode richiede un secret non vuoto (alias message o payload, massimo 4096 caratteri) e testo di copertura non vuoto (accettato anche come text, input, value o data, massimo 100000 caratteri). Decode richiede text non vuoto contenente un payload incorniciato (alias cover, input, value, data o stego, massimo 200000 caratteri). Gli alias di mode includono hide ed embed per encode, e reveal o extract per decode; il predefinito è encode se mode è omesso. In caso di encode riuscito il corpo include result (stringa steganografica), mode, encoding zero_width, secret_length, cover_length, result_length, byte_count, bit_count, zero_width_count, formula e un breve messaggio su quanti byte UTF-8 sono stati nascosti. In caso di decode riuscito il corpo include result e secret (la stringa rivelata), mode, encoding, lunghezze, conteggi di bit e byte, zero_width_count, formula e un messaggio di rivelazione. Campi assenti, stringhe vuote, mode sconosciuto, marcatori di inizio o fine assenti, caratteri non bit nel riquadro, marcatori annidati, lunghezza bit non multipla di otto o UTF-8 non valido dopo l'assemblaggio dei bit sollevano invalid_input con un messaggio chiaro in inglese.
Dove un codificatore a larghezza zero crea valore in prodotti e didattica
I team QA iniettano filigrane invisibili in testi di marketing di esempio per rilevare quando le bozze filtrano tramite percorsi di incolla non controllati; una chiamata API deterministica a $0.002 per elemento riuscito costa meno che erigere un Worker su misura per uno script occasionale.
Casi di integrazione
Controlli CI sulle pipeline di incolla
Codifichi un segreto noto in fixture, li faccia passare dall'editor o dall'integrazione di chat e decodifichi per verificare che i caratteri a larghezza zero abbiano superato il percorso.
Domande tecniche
Come nascondo un segreto con caratteri a larghezza zero?
Chiami con mode encode (o ometta mode), passi secret e cover non vuoti. L'API restituisce testo steganografico con un riquadro U+200D…U+FEFF di bit U+200B/U+200C inserito dopo il primo carattere di copertura.
Quanto costa il codificatore di caratteri a larghezza zero?
Lo strumento browser è gratuito. Le richieste API usano il saldo prepagato KIT a $0.002 per chiamata riuscita; l'input non valido non viene addebitato.