Encodeur et décodeur Crockford Base32

Convertissez du texte, des octets hexadécimaux ou des fichiers dans le Base32 de Douglas Crockford, et inversement. Le décodeur pardonne les fautes de frappe : il ignore la casse et les tirets, et lit O comme 0 et I ou L comme 1.

Fonctionne entièrement dans votre navigateur. Aucune donnée n’est envoyée.

Mode d’emploi

  1. Choisissez Encoder pour transformer du texte en Crockford Base32, ou Décoder pour retrouver le texte.
  2. Laissez la variante Crockford sélectionnée et vérifiez que Remplissage est désactivé. Activez Minuscules pour obtenir une sortie en minuscules.
  3. Saisissez ou collez vos données, ou ouvrez un fichier. Lors du décodage, les tirets et les espaces sont ignorés.
  4. Copiez le résultat ou téléchargez-le sous forme de fichier.

Qu’est-ce que Crockford Base32 ?

Douglas Crockford a conçu cet alphabet Base32 pour des identifiants que l’on lit, que l’on tape et que l’on prononce à voix haute. Il utilise les dix chiffres et 22 lettres majuscules : 0123456789ABCDEFGHJKMNPQRSTVWXYZ. Les lettres I et L sont exclues parce qu’elles ressemblent au chiffre 1, O parce qu’elle ressemble à 0, et U pour réduire le risque de former par accident des mots obscènes.

Chaque symbole transporte 5 bits : 5 octets donnent donc 8 caractères, comme avec le Base32 de la RFC 4648. Les symboles suivent l’ordre ASCII croissant : des chaînes sans remplissage écrites dans une même casse se trient dans le même ordre que les données qu’elles encodent. La spécification de Crockford n’utilise pas de remplissage ; laissez donc l’option Remplissage désactivée.

Un décodage tolérant

La spécification de Crockford demande aux décodeurs d’accepter ce que les gens tapent réellement, et cet outil s’y conforme :

  • Les lettres majuscules et minuscules sont traitées de la même façon.
  • La lettre O est lue comme le chiffre 0, et les lettres I et L comme 1.
  • Les tirets, que l’on peut insérer pour rendre les codes longs plus lisibles, sont ignorés, tout comme les espaces et les sauts de ligne.

La lettre U n’est pas valide et est signalée avec sa position.

Octets, nombres et ULID

Crockford décrit son encodage en termes de nombres, alors que cet outil encode une suite d’octets par groupes de 5 bits, à la manière de la RFC 4648, avec les symboles de Crockford. Lorsque le nombre de bits n’est pas un multiple de 5, les implémentations fondées sur les nombres placent les bits nuls excédentaires au début, tandis que cet outil les place à la fin : les résultats peuvent donc différer.

ULID en est un exemple courant. Il utilise l’alphabet de Crockford, mais encode sa valeur de 128 bits comme un nombre sur 26 caractères : les 16 octets d’un ULID ne donnent donc pas la même chaîne ici, et décoder un ULID produit des octets décalés de deux bits. Le symbole de contrôle facultatif de la spécification de Crockford, un caractère supplémentaire correspondant à la valeur modulo 37, n’est pas pris en charge : cet outil ne l’ajoute pas et ne le vérifie pas.

Spécifications

Alphabet0-9 A-Z sans I L O U
Taille de sortie8 caractères pour 5 octets (160 %)
RemplissageAucun
NormeCrockford Base32 (2002)
Sensible à la casseNon

Exemples

Entrée (UTF-8)Sortie
Hello, World!91JPRV3F5GG5EVVJDHJ22
Base64.is89GQ6S9P6GQ6JWR
你好WJYT1SD5QM

Questions fréquentes

Crockford Base32 est-il sensible à la casse ?

Non. La sortie est en majuscules par défaut, et l’option Minuscules la passe en minuscules. Le décodeur accepte les deux, même mélangées dans une même chaîne.

Pourquoi I, L, O et U sont-ils absents de l’alphabet ?

I et L se confondent facilement avec 1, et O avec 0 : ces lettres sont donc exclues et lues comme ces chiffres lors du décodage. U est exclu pour que les codes aléatoires risquent moins de former des mots anglais choquants.

Cet outil prend-il en charge le symbole de contrôle de Crockford ?
Non. La spécification autorise un caractère supplémentaire facultatif contenant une somme de contrôle modulo 37, qui utilise les symboles additionnels * ~ $ = U. Cet outil ne l’ajoute pas et ne le vérifie pas : retirez donc le symbole de contrôle avant de décoder.
Puis-je décoder un ULID ici ?

Pas en retrouvant exactement ses 16 octets. ULID encode ses 128 bits comme un seul nombre, avec les bits excédentaires au début, alors que cet outil travaille par groupes d’octets et les place à la fin. Utilisez une bibliothèque ULID pour lire l’horodatage et la partie aléatoire.