Så använder du verktyget
- Klistra in hexsträngen i fältet Indata. Hex är redan förvalt som källa och Base64 som mål.
- Du behöver inte bry dig om formateringen: mellanslag, radbrytningar, kolon, bindestreck och prefixen 0x eller \x ignoreras.
- Byt mål till Base64URL om värdet ska användas i en URL, en JWT eller en JSON Web Key.
- Kopiera Base64-resultatet.
Varför konvertera hex till Base64
De flesta hashverktyg skriver ut hashvärden i hex, men många protokoll förväntar sig Base64, som är en tredjedel kortare. Typiska fall:
- Subresource Integrity. Attributet
integritypå skript och formatmallar innehåller ett Base64-kodat hashvärde, till exempelsha384-följt av 64 Base64-tecken. - Content Security Policy. Hashvärden som tillåter inbäddade skript skrivs som
'sha256-...'med ett Base64-värde. - Kontrollsummor i HTTP-API:er. Headern
Content-MD5och kontrollsummeheaders i Amazon S3 innehåller det binära hashvärdet som Base64, inte den hexsträng sommd5sumskriver ut. - Kompakta identifierare. Ett UUID är 16 byte: 32 hexsiffror, men bara 22 tecken som Base64URL utan utfyllnad.
Hexformat som accepteras
Hexsiffror är inte skiftlägeskänsliga. Före avkodningen tar konverteraren bort blanksteg, radbrytningar, kolon, semikolon, kommatecken, bindestreck och prefixen 0x, \x, % och &#x. Det täcker OpenSSL-fingeravtryck som AB:CD:EF, C-arrayer som 0x12, 0x34, escapade strängar som \x12\x34, procentkodade byte och UUID:n med bindestreck.
Efter rensningen måste indatan innehålla ett jämnt antal siffror, två per byte. Ett udda antal rapporteras som ett fel och betyder oftast att en inledande nolla har fallit bort, till exempel abc när det skulle vara 0abc.
Koda bytena, inte hextexten
Ett vanligt misstag är att klistra in ett hashvärde i hex i en vanlig kodare från text till Base64. Då kodas tecknen 0-9a-f i stället för de byte som de står för, och resultatet blir dubbelt så långt som det borde: 88 tecken för ett SHA-256-hashvärde i stället för 44. Allt som förväntar sig det binära hashvärdet, till exempel ett SRI-attribut eller en kontrollsummeheader, avvisar då värdet. Den här konverteraren avkodar först hexvärdet till byte.
# Skal: hashvärde i hex till Base64
printf '%s' "$HEX" | xxd -r -p | base64
# SRI-värde för en fil i ett steg
openssl dgst -sha384 -binary script.js | openssl base64 -A
# Python
base64.b64encode(bytes.fromhex(h)).decode()
// Node.js (stannar tyst vid första tecknet som inte är hex)
Buffer.from(h, 'hex').toString('base64')
Vanliga frågor
Varför får jag ett fel för min hexsträng?
Antingen innehåller indatan ett tecken som inte är en hexsiffra, till exempel bokstaven O i stället för en nolla, eller så är antalet siffror udda. Felmeddelandet visar positionen för det ogiltiga tecknet; vid udda längd bör du kontrollera om en inledande nolla saknas.
Hur lång blir Base64-utdatan?
=-tecken.Hur skapar jag ett hashvärde för Subresource Integrity?
integrity="sha384-..." med Base64-värdet. Med OpenSSL räcker ett enda kommando: openssl dgst -sha384 -binary file.js | openssl base64 -A.Är utdatan standard-Base64 eller URL-säker Base64?
+ och /, som SRI, CSP och kontrollsummeheaders i HTTP kräver. Välj Base64URL som målkodning när du behöver URL-säker utdata.