Konverter hex til Base64

Lim inn heksadesimale byte og få de samme dataene som Base64. Skilletegn som mellomrom, kolon og 0x-prefikser fjernes automatisk, så hasher og fingeravtrykk kan limes inn som de er.

Kjører helt i nettleseren din. Ingenting lastes opp.

Slik bruker du verktøyet

  1. Lim inn hex-strengen i inndatafeltet. Heksadesimal er forhåndsvalgt under Fra og Base64 under Til.
  2. Du trenger ikke tenke på formateringen: mellomrom, linjeskift, kolon, bindestreker og prefiksene 0x og \x ignoreres.
  3. Velg Base64URL under Til hvis verdien skal brukes i en URL, et JWT eller en JSON Web Key.
  4. Trykk på Kopier for å kopiere Base64-resultatet.

Hvorfor konvertere hex til Base64

De fleste hashverktøy skriver ut hashverdier i hex, men mange protokoller forventer Base64, som er en tredjedel kortere. Typiske tilfeller:

  • Subresource Integrity. Attributtet integrity på skript og stilark inneholder en Base64-kodet hashverdi, for eksempel sha384- etterfulgt av 64 Base64-tegn.
  • Content Security Policy. Hasher som tillater innebygde skript, skrives som 'sha256-...' med en Base64-verdi.
  • Kontrollsummer i HTTP-API-er. Headeren Content-MD5 og kontrollsum-headerne i Amazon S3 inneholder Base64 av den binære hashverdien, ikke hex-strengen som md5sum skriver ut.
  • Kompakte identifikatorer. En UUID er 16 byte: 32 hex-sifre, men bare 22 tegn som Base64URL uten utfylling.

Hex-formater som godtas

Hex-sifre skiller ikke mellom store og små bokstaver. Før dekodingen fjerner konverteren blanktegn, linjeskift, kolon, semikolon, komma, bindestreker og prefiksene 0x, \x, % og &#x. Det dekker OpenSSL-fingeravtrykk som AB:CD:EF, C-arrayer som 0x12, 0x34, strenger med escape-sekvenser som \x12\x34, prosentkodede byte og UUID-er med bindestreker.

Etter oppryddingen må inndataene inneholde et partall sifre, to per byte. Et oddetall rapporteres som en feil og betyr som regel at en innledende null har falt bort, for eksempel abc der det skulle stått 0abc.

Kod bytene, ikke hex-teksten

En vanlig feil er å lime inn en hex-hashverdi i en vanlig tekst-til-Base64-koder. Da kodes tegnene 0-9a-f i stedet for bytene de står for, og resultatet blir dobbelt så langt som det skal være: 88 tegn for en SHA-256-hashverdi i stedet for 44. Alt som forventer den binære hashverdien, for eksempel et SRI-attributt eller en kontrollsum-header, vil avvise det. Denne konverteren dekoder derfor hex-verdien til byte først.

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

# SRI-verdi for en fil i ett trinn
openssl dgst -sha384 -binary script.js | openssl base64 -A

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

// Node.js (stopper uten varsel ved første tegn som ikke er hex)
Buffer.from(h, 'hex').toString('base64')

Ofte stilte spørsmål

Hvorfor får jeg en feilmelding for hex-strengen min?

Enten inneholder inndataene et tegn som ikke er et hex-siffer, for eksempel bokstaven O i stedet for null, eller så er antallet sifre et oddetall. Feilmeldingen viser posisjonen til det ugyldige tegnet. Ved oddetallslengde bør du sjekke om en innledende 0 mangler.

Hvor langt blir Base64-resultatet?
Del antallet hex-sifre på 2 for å få antall byte, og regn deretter 4 tegn for hver påbegynte gruppe på 3 byte. En SHA-256-hashverdi på 64 sifre blir 44 Base64-tegn, inkludert ett =-tegn.
Hvordan lager jeg en Subresource Integrity-hash?
Beregn SHA-384-hashverdien av filen, konverter hex-verdien her, og skriv integrity="sha384-..." med Base64-verdien. Med OpenSSL klarer du det med én kommando: openssl dgst -sha384 -binary file.js | openssl base64 -A.
Er resultatet standard eller URL-sikker Base64?
Standard Base64 med + og /, slik SRI, CSP og kontrollsum-headere i HTTP krever. Velg Base64URL under Til når du trenger URL-sikre utdata.