Slik bruker du verktøyet
- Lim inn hex-strengen i inndatafeltet. Heksadesimal er forhåndsvalgt under Fra og Base64 under Til.
- Du trenger ikke tenke på formateringen: mellomrom, linjeskift, kolon, bindestreker og prefiksene 0x og \x ignoreres.
- Velg Base64URL under Til hvis verdien skal brukes i en URL, et JWT eller en JSON Web Key.
- 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
integritypå skript og stilark inneholder en Base64-kodet hashverdi, for eksempelsha384-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-MD5og kontrollsum-headerne i Amazon S3 inneholder Base64 av den binære hashverdien, ikke hex-strengen sommd5sumskriver 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?
=-tegn.Hvordan lager jeg en Subresource Integrity-hash?
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?
+ og /, slik SRI, CSP og kontrollsum-headere i HTTP krever. Velg Base64URL under Til når du trenger URL-sikre utdata.