Sådan bruger du værktøjet
- Indsæt hexstrengen i inputfeltet. Hex er allerede valgt under Fra og Base64 under Til.
- Du behøver ikke tænke på formateringen: Mellemrum, linjeskift, koloner, bindestreger og præfikserne 0x og \x ignoreres.
- Skift målet under Til til Base64URL, hvis værdien skal bruges i en URL, et JWT eller en JSON Web Key.
- 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
integritypå scripts og stylesheets indeholder et Base64-digest, for eksempelsha384-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-MD5og kontrolsum-headerne i Amazon S3 indeholder Base64 af det binære digest, ikke den hexstreng, sommd5sumskriver. - 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?
=-tegn.Hvordan laver jeg en Subresource Integrity-hash?
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?
+ 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.