Hex-naar-Base64-converter

Plak hexadecimale bytes en krijg dezelfde gegevens als Base64. Scheidingstekens zoals spaties, dubbele punten en 0x-voorvoegsels worden automatisch verwijderd, dus je kunt hashes en vingerafdrukken plakken zoals ze zijn.

Werkt volledig in je browser. Er wordt niets geüpload.

Zo gebruik je het

  1. Plak de hexstring in het invoerveld. Hex is al gekozen als bron en Base64 als doel.
  2. Je hoeft niets op te schonen: spaties, regeleinden, dubbele punten, koppeltekens en 0x- of \x-voorvoegsels worden genegeerd.
  3. Kies Base64URL als doel als de waarde in een URL, een JWT of een JSON Web Key terechtkomt.
  4. Kopieer het Base64-resultaat.

Waarom hex omzetten naar Base64

De meeste hashtools tonen digests in hex, maar veel protocollen verwachten Base64, dat een derde korter is. Typische gevallen:

  • Subresource Integrity. Het attribuut integrity op scripts en stylesheets bevat een Base64-digest, bijvoorbeeld sha384- gevolgd door 64 Base64-tekens.
  • Content Security Policy. Hashes die inline scripts toestaan, worden geschreven als 'sha256-...' met een Base64-waarde.
  • Controlesommen in HTTP-API's. De header Content-MD5 en de checksumheaders van Amazon S3 bevatten de Base64 van de binaire digest, niet de hexstring die md5sum toont.
  • Compacte identifiers. Een UUID is 16 bytes: 32 hexcijfers, maar slechts 22 tekens als Base64URL zonder opvulling.

Ondersteunde hexformaten

Hexcijfers zijn niet hoofdlettergevoelig. Voor het decoderen verwijdert de converter witruimte, regeleinden, dubbele punten, puntkomma's, komma's, koppeltekens en de voorvoegsels 0x, \x, % en &#x. Zo werken OpenSSL-vingerafdrukken zoals AB:CD:EF, C-arrays zoals 0x12, 0x34, escapete strings zoals \x12\x34, procentgecodeerde bytes en UUID's met koppeltekens allemaal.

Na het opschonen moet de invoer een even aantal cijfers bevatten, twee per byte. Een oneven aantal wordt als fout gemeld en betekent meestal dat er een voorloopnul is weggevallen, bijvoorbeeld abc waar 0abc bedoeld was.

Codeer de bytes, niet de hextekst

Een veelgemaakte fout is een hexdigest in een gewone tekst-naar-Base64-encoder plakken. Die codeert dan de tekens 0-9a-f in plaats van de bytes die ze voorstellen, en het resultaat wordt twee keer zo lang als het hoort te zijn: 88 tekens voor een SHA-256-digest in plaats van 44. Alles wat de binaire digest verwacht, zoals een SRI-attribuut of een checksumheader, keurt zo'n waarde af. Deze converter decodeert de hex eerst naar bytes.

# Shell: hexdigest naar Base64
printf '%s' "$HEX" | xxd -r -p | base64

# SRI-waarde voor een bestand in één stap
openssl dgst -sha384 -binary script.js | openssl base64 -A

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

// Node.js (stopt zonder melding bij het eerste teken dat geen hex is)
Buffer.from(h, 'hex').toString('base64')

Veelgestelde vragen

Waarom krijg ik een foutmelding bij mijn hexstring?

Ofwel bevat de invoer een teken dat geen hexcijfer is, zoals de letter O in plaats van een nul, ofwel is het aantal cijfers oneven. De foutmelding toont de positie van het ongeldige teken; controleer bij een oneven lengte of er een voorloopnul ontbreekt.

Hoe lang wordt de Base64-uitvoer?
Deel het aantal hexcijfers door 2 voor het aantal bytes en reken dan 4 tekens per 3 bytes, naar boven afgerond. Een SHA-256-digest van 64 hexcijfers wordt 44 Base64-tekens, inclusief één =-teken.
Hoe maak ik een Subresource Integrity-hash?
Bereken de SHA-384-digest van het bestand, zet de hexdigest hier om en schrijf integrity="sha384-..." met de Base64-waarde. Met OpenSSL kan het in één opdracht: openssl dgst -sha384 -binary file.js | openssl base64 -A.
Is de uitvoer standaard of URL-veilige Base64?
Standaard Base64 met + en /, zoals SRI, CSP en HTTP-checksumheaders vereisen. Kies Base64URL als doelcodering wanneer je URL-veilige uitvoer nodig hebt.