ForHosting KIT · Outils pour développeurs

Encodeur de caractères largeur nulle

Cache un secret dans un texte ordinaire avec des caractères Unicode invisibles : « Hi » glissé dans « Hello world » devient 18 caractères de largeur nulle que personne ne voit, et le décodage le révèle. Utile pour filigranes et cours, mais pas un chiffrement. Gratuit dans votre navigateur.

  • Gratuit
  • Fonctionne dans votre navigateur
  • Sans inscription
  • Vos données restent sur votre appareil
Utilisez-le depuis WebAPIE-mailTelegramApp bientôt
Si vous saisissez
Clé secrète
Hi
Texte de couverture
Hello world
Mode de calcul
encode
Vous obtenez
Résultat
H‍​‌​​‌​​​​‌‌​‌​​‌ello world
Encodage
zero_width
Longueur du secret
2
Longueur du texte de couverture
11

Les caractères de largeur nulle sont des points de code Unicode qui n'occupent aucune largeur visible, de sorte que le lecteur ordinaire ne les remarque pas tandis que les analyseurs et le copier-coller transportent encore les octets. Cet encodeur de caractères de largeur nulle transforme une chaîne secrète UTF-8 en un flux de symboles U+200B et U+200C encadré par les marqueurs U+200D et U+FEFF, puis insère cette charge invisible dans le texte de couverture après le premier caractère. Le décodage recherche le même cadre, reconstruit les bits en octets et renvoie le secret d'origine. L'outil n'est pas un chiffrement : quiconque connaît le schéma peut extraire la charge ; traitez-le comme aide pédagogique, filigrane léger ou couche de démonstration, non comme frontière de secret.

Comment le codage binaire en largeur nulle dissimule un secret à vue

Le texte de couverture visible reste lisible parce que la charge n'emploie que des caractères de format à avance de largeur nulle. L'encodeur convertit d'abord le secret en octets UTF-8, puis parcourt chaque bit du plus significatif au moins significatif au sein de chaque octet. Le bit zéro devient U+200B (ZERO WIDTH SPACE) et le bit un devient U+200C (ZERO WIDTH NON-JOINER).

Un marqueur de début U+200D et un marqueur de fin U+FEFF encadrent ce flux de bits afin que le décodage ignore d'autres caractères invisibles hors sujet dans le document et récupère néanmoins une charge bien définie. Comme chaque étape est de l'arithmétique pure de chaînes et d'octets, le même secret et la même couverture produisent toujours le même texte stéganographique sur tout environnement d'exécution.

Ce contrat rejoint les explications de cours sur la stéganographie sans prétendre que le canal soit confidentiel : dissimuler en largeur nulle porte sur l'invisibilité dans l'interface, non sur la résistance à un lecteur motivé qui inspecte les points de code.

Où un encodeur de largeur nulle apporte de la valeur en produit et en enseignement

Les ateliers de sécurité et de confidentialité utilisent un encodeur de caractères de largeur nulle pour que les apprenants collent un texte stéganographique dans un chat ou un document, confirment que le message paraît encore propre, puis le décodent en une seconde étape en voyant la carte des bits dans le champ formula. Comme l'implémentation est pure analyse, sans jetons de modèle ni réseau sortant, la latence reste au plancher analytique et le coût reste prévisible.

Préférez cet outil lorsque la tâche est de cacher et révéler avec des caractères de format Unicode ; choisissez de vraies bibliothèques cryptographiques lorsque la confidentialité sous attaque est l'exigence. Documentez pour les utilisateurs finaux que certaines plateformes normalisent ou suppriment les caractères de largeur nulle à l'envoi, donc faites toujours un aller-retour via decode après le canal réel qui vous importe.

Démonstrations de stéganographie en classe

Montrez aux élèves comment des bits Unicode invisibles cachent un court secret dans des phrases de couverture ordinaires, puis révélez-le avec decode sur le même module déterministe.

Filigranes anti-fuite de brouillons

Incorporez un identifiant d'équipe ou de ticket en bits de largeur nulle dans des textes marketing d'exemple pour attribuer les collages fuités sans changer la mise en page visible.

Comment révéler un message caché ?

Appelez avec mode decode et passez la chaîne stéganographique comme text.

Quels caractères Unicode sont utilisés ?

Le bit 0 est U+200B, le bit 1 est U+200C, le marqueur de début est U+200D et celui de fin est U+FEFF.

S'agit-il d'un chiffrement ?

Non. Le codage en largeur nulle ne fait que dissimuler des bits aux lecteurs occasionnels. Quiconque connaît le schéma — ou inspecte les points de code — peut récupérer la charge. Utilisez la cryptographie lorsque vous avez besoin de confidentialité.

Comment cacher un message dans un texte ?

Saisissez le secret et le texte visible qui servira de couverture. Le secret devient des bits invisibles, encadrés par une marque de début et une marque de fin, puis il est inséré juste après le premier caractère de la couverture, qui se lit toujours pareil.

Le message caché survit-il au copier-coller ?

En général oui, car les caractères invisibles voyagent avec le texte. Certaines applications normalisent ou suppriment les caractères de largeur nulle à l'envoi : après avoir fait passer le texte par le canal qui vous intéresse, décodez-le une fois pour vérifier que le secret est toujours là.

Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.

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

Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.

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"
  }
}

L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.

par requête$0.002

Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.

HTTPCodeSignification
401unauthorizedClé API absente ou invalide : vérifiez l’en-tête Authorization.
402insufficient_balanceSolde insuffisant : rechargez votre compte pour lancer cette tâche.
404unknown_typeType de tâche inconnu : vérifiez le champ type de votre requête.
429rate_limitedTrop de requêtes : ralentissez la cadence, puis réessayez.

Marqueurs invalides, groupes de bits incomplets ou champs manquants échouent avec invalid_input et ne sont pas facturés.

Comment le codage binaire en largeur nulle dissimule un secret à vue

Le décodage inverse le chemin : localiser le premier marqueur de début, le marqueur de fin suivant, n'accepter que U+200B et U+200C entre eux, exiger un nombre de bits multiple de huit, réassembler les octets et décoder en UTF-8 avec un décodeur fatal pour que les flux corrompus apparaissent en invalid_input plutôt qu'en texte illisible.

Contrat d'entrée, modes, forme de la réponse et erreurs

Envoyez mode encode ou decode. Les champs optionnels inapplicables à un mode sont simplement ignorés ; le gestionnaire n'invente jamais de secret en l'absence de marqueurs. Encode exige un secret non vide (alias message ou payload, max 4096 caractères) et un texte de couverture non vide (aussi accepté comme text, input, value ou data, max 100000 caractères). Decode exige un text non vide contenant une charge encadrée (alias cover, input, value, data ou stego, max 200000 caractères). Les alias de mode incluent hide et embed pour encode, et reveal ou extract pour decode ; la valeur par défaut est encode si mode est omis. En cas d'encode réussi le corps inclut result (chaîne stéganographique), mode, encoding zero_width, secret_length, cover_length, result_length, byte_count, bit_count, zero_width_count, formula et un court message indiquant combien d'octets UTF-8 ont été cachés. En cas de decode réussi le corps inclut result et secret (la chaîne révélée), mode, encoding, longueurs, compteurs de bits et d'octets, zero_width_count, formula et un message de révélation. Champs manquants, chaînes vides, mode inconnu, marqueurs de début ou de fin absents, caractères non bits dans le cadre, marqueurs imbriqués, longueur de bits non multiple de huit ou UTF-8 invalide après assemblage des bits lèvent invalid_input avec un message clair en anglais. Ces échecs ne consomment pas le solde prépayé. Gardez des charges modestes pour les widgets et figez les chaînes result dans les tests : les caractères de largeur nulle sont du vrai Unicode, donc les exemples JSON doivent les conserver exactement.

Où un encodeur de largeur nulle apporte de la valeur en produit et en enseignement

Les équipes QA injectent des filigranes invisibles dans des textes marketing d'exemple pour détecter les fuites de brouillons via des chemins de collage non contrôlés ; un appel API déterministe à $0.002 par élément réussi coûte moins cher que de monter un Worker sur mesure pour un script ponctuel.

Contrôles CI des pipelines de collage

Encodez un secret connu dans des fixtures, faites-les passer par votre éditeur ou intégration de chat, puis décodez pour vérifier que les caractères de largeur nulle ont survécu au trajet.

Comment cacher un secret avec des caractères de largeur nulle ?

Appelez avec mode encode (ou omettez mode), passez secret et cover non vides. L'API renvoie un texte stéganographique avec un cadre U+200D…U+FEFF de bits U+200B/U+200C inséré après le premier caractère de couverture.

Combien coûte l'encodeur de caractères de largeur nulle ?

L'outil navigateur est gratuit. Les requêtes API utilisent le solde prépayé KIT à $0.002 par appel réussi ; une entrée invalide n'est pas facturée.

Consulter la documentation complète du KIT →