Hex til Base64-konverter

Indsæt hexadecimale bytes, og få de samme data som Base64. Skilletegn som mellemrum, koloner og 0x-præfikser fjernes automatisk, så hashværdier og fingeraftryk kan indsættes, som de er.

Kører udelukkende i din browser. Intet bliver uploadet.

Sådan bruger du værktøjet

  1. Indsæt hexstrengen i inputfeltet. Hex er allerede valgt under Fra og Base64 under Til.
  2. Du behøver ikke tænke på formateringen: Mellemrum, linjeskift, koloner, bindestreger og præfikserne 0x og \x ignoreres.
  3. Skift målet under Til til Base64URL, hvis værdien skal bruges i en URL, et JWT eller en JSON Web Key.
  4. Kopiér Base64-resultatet.

Hvorfor konvertere hex til Base64

De fleste hashværktøjer skriver digests i hex, men mange protokoller forventer Base64, som er en tredjedel kortere. Typiske tilfælde:

  • Subresource Integrity. Attributten integrity på scripts og stylesheets indeholder et Base64-digest, for eksempel sha384- efterfulgt af 64 Base64-tegn.
  • Content Security Policy. Hashværdier, der tillader inline-scripts, skrives som 'sha256-...' med en Base64-værdi.
  • Kontrolsummer i HTTP-API'er. Headeren Content-MD5 og kontrolsum-headerne i Amazon S3 indeholder Base64 af det binære digest, ikke den hexstreng, som md5sum skriver.
  • Kompakte id'er. Et UUID er 16 bytes: 32 hexcifre, men kun 22 tegn som Base64URL uden udfyldning.

Understøttede hexformater

Hexcifre skelner ikke mellem store og små bogstaver. Før afkodningen fjerner konverteren blanktegn, linjeskift, koloner, semikoloner, kommaer, bindestreger og præfikserne 0x, \x, % og &#x. Det dækker OpenSSL-fingeraftryk som AB:CD:EF, C-arrays som 0x12, 0x34, escapede strenge som \x12\x34, procentkodede bytes og UUID'er med bindestreger.

Efter oprydningen skal inputtet indeholde et lige antal cifre, to pr. byte. Et ulige antal rapporteres som en fejl og betyder som regel, at et foranstillet nul er gået tabt, for eksempel abc, hvor der skulle have stået 0abc.

Kod bytes, ikke hextekst

En hyppig fejl er at indsætte et hex-digest i en almindelig tekst-til-Base64-koder. Den koder tegnene 0-9a-f i stedet for de bytes, de står for, og resultatet bliver dobbelt så langt, som det burde: 88 tegn for et SHA-256-digest i stedet for 44. Alt, der forventer det binære digest, for eksempel en SRI-attribut eller en kontrolsum-header, vil afvise det. Denne konverter afkoder først hex til bytes.

# Shell: hex-digest til Base64
printf '%s' "$HEX" | xxd -r -p | base64

# SRI-værdi for en fil i ét trin
openssl dgst -sha384 -binary script.js | openssl base64 -A

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

// Node.js (stopper uden fejl ved det første tegn, der ikke er hex)
Buffer.from(h, 'hex').toString('base64')

Ofte stillede spørgsmål

Hvorfor får jeg en fejl for min hexstreng?

Enten indeholder inputtet et tegn, der ikke er et hexciffer, for eksempel bogstavet O i stedet for et nul, eller også er antallet af cifre ulige. Fejlmeddelelsen viser positionen for det ugyldige tegn. Ved en ulige længde skal du kontrollere, om der mangler et foranstillet 0.

Hvor langt bliver Base64-outputtet?
Del antallet af hexcifre med 2 for at få antallet af bytes, og regn derefter med 4 tegn for hver 3 bytes, rundet op. Et SHA-256-digest på 64 cifre bliver til 44 Base64-tegn inklusive ét =-tegn.
Hvordan laver jeg en Subresource Integrity-hash?
Beregn SHA-384-digestet af filen, konvertér hex-digestet her, og skriv integrity="sha384-..." med Base64-værdien. Med OpenSSL kan du gøre det i én kommando: openssl dgst -sha384 -binary file.js | openssl base64 -A.
Er outputtet standard- eller URL-sikker Base64?
Standard-Base64 med + og /, som SRI, CSP og kontrolsum-headere i HTTP kræver. Vælg Base64URL som målkodning under Til, når du har brug for URL-sikkert output.