Convertisseur hexadécimal en Base64

Collez des octets en hexadécimal et obtenez les mêmes données en Base64. Les séparateurs comme les espaces, les deux-points et les préfixes 0x sont supprimés automatiquement : vous pouvez coller hachages et empreintes tels quels.

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

Mode d’emploi

  1. Collez la chaîne hexadécimale dans le champ « Entrée ». La source « De » est déjà réglée sur « Hexadécimal (Base16) » et la cible « Vers » sur Base64.
  2. Ne vous souciez pas de la mise en forme : les espaces, sauts de ligne, deux-points, tirets et préfixes 0x ou \x sont ignorés.
  3. Choisissez Base64URL dans « Vers » si la valeur est destinée à une URL, à un JWT ou à une JSON Web Key.
  4. Copiez le résultat Base64.

Pourquoi convertir de l’hexadécimal en Base64

La plupart des outils de hachage affichent les empreintes en hexadécimal, mais de nombreux protocoles attendent du Base64, plus court d’un tiers. Cas typiques :

  • Subresource Integrity. L’attribut integrity des scripts et des feuilles de style contient une empreinte en Base64, par exemple sha384- suivi de 64 caractères Base64.
  • Content Security Policy. Les hachages qui autorisent des scripts inline s’écrivent 'sha256-...', suivis d’une valeur en Base64.
  • Sommes de contrôle dans les API HTTP. L’en-tête Content-MD5 et les en-têtes de somme de contrôle d’Amazon S3 contiennent le Base64 de l’empreinte binaire, et non la chaîne hexadécimale qu’affiche md5sum.
  • Identifiants compacts. Un UUID fait 16 octets : 32 chiffres hexadécimaux, mais seulement 22 caractères en Base64URL sans remplissage.

Formats hexadécimaux acceptés

Les chiffres hexadécimaux ne sont pas sensibles à la casse. Avant le décodage, le convertisseur supprime les espaces, sauts de ligne, deux-points, points-virgules, virgules et tirets, ainsi que les préfixes 0x, \x, % et &#x. Cela couvre les empreintes OpenSSL comme AB:CD:EF, les tableaux C comme 0x12, 0x34, les chaînes échappées comme \x12\x34, les octets encodés en pourcent et les UUID avec tirets.

Après ce nettoyage, l’entrée doit contenir un nombre pair de chiffres, deux par octet. Un nombre impair est signalé comme une erreur et signifie généralement qu’un zéro initial a été perdu, par exemple abc au lieu de 0abc.

Encoder les octets, pas le texte hexadécimal

Une erreur fréquente consiste à coller une empreinte hexadécimale dans un encodeur texte vers Base64 ordinaire. Celui-ci encode alors les caractères 0-9a-f au lieu des octets qu’ils représentent, et le résultat est deux fois trop long : 88 caractères pour une empreinte SHA-256 au lieu de 44. Tout ce qui attend l’empreinte binaire, comme un attribut SRI ou un en-tête de somme de contrôle, le rejettera. Ce convertisseur commence donc par décoder l’hexadécimal en octets.

# Shell : empreinte hexadécimale vers Base64
printf '%s' "$HEX" | xxd -r -p | base64

# Valeur SRI d’un fichier en une seule étape
openssl dgst -sha384 -binary script.js | openssl base64 -A

# Python
base64.b64encode(bytes.fromhex(h)).decode()

// Node.js (s’arrête sans erreur au premier caractère non hexadécimal)
Buffer.from(h, 'hex').toString('base64')

Questions fréquentes

Pourquoi ma chaîne hexadécimale provoque-t-elle une erreur ?

Soit l’entrée contient un caractère qui n’est pas un chiffre hexadécimal, comme la lettre O à la place d’un zéro, soit le nombre de chiffres est impair. Le message d’erreur indique la position du caractère non valide ; en cas de longueur impaire, vérifiez s’il ne manque pas un 0 initial.

Quelle sera la longueur du résultat Base64 ?
Divisez le nombre de chiffres hexadécimaux par 2 pour obtenir le nombre d’octets, puis comptez 4 caractères par groupe de 3 octets, en arrondissant au supérieur. Une empreinte SHA-256 de 64 chiffres donne 44 caractères Base64, dont un signe =.
Comment créer un hachage Subresource Integrity ?
Calculez l’empreinte SHA-384 du fichier, convertissez ici l’empreinte hexadécimale, puis écrivez integrity="sha384-..." avec la valeur Base64. Avec OpenSSL, une seule commande suffit : openssl dgst -sha384 -binary file.js | openssl base64 -A.
Le résultat est-il en Base64 standard ou compatible URL ?
En Base64 standard, avec + et /, comme l’exigent SRI, CSP et les en-têtes de somme de contrôle HTTP. Choisissez Base64URL dans « Vers » si vous avez besoin d’une sortie compatible URL.