Anleitung
- Fügen Sie den Hex-String in das Eingabefeld ein. Unter „Von“ ist Hex und unter „Nach“ Base64 bereits vorausgewählt.
- Um die Formatierung müssen Sie sich nicht kümmern: Leerzeichen, Zeilenumbrüche, Doppelpunkte, Bindestriche sowie 0x- oder \x-Präfixe werden ignoriert.
- Stellen Sie „Nach“ auf Base64URL um, wenn der Wert in einer URL, einem JWT oder einem JSON Web Key verwendet wird.
- Kopieren Sie das Base64-Ergebnis.
Warum Hex in Base64 umwandeln
Die meisten Hash-Tools geben Hashwerte in Hex aus, viele Protokolle erwarten jedoch das um ein Drittel kürzere Base64. Typische Fälle:
- Subresource Integrity. Das Attribut
integrityvon Skripten und Stylesheets enthält einen Base64-Hashwert, etwasha384-gefolgt von 64 Base64-Zeichen. - Content Security Policy. Hashes, die Inline-Skripte erlauben, werden als
'sha256-...'mit einem Base64-Wert angegeben. - Prüfsummen in HTTP-APIs. Der Header
Content-MD5und die Prüfsummen-Header von Amazon S3 enthalten das Base64 des binären Hashwerts, nicht den Hex-String, denmd5sumausgibt. - Kompakte Kennungen. Eine UUID umfasst 16 Bytes: 32 Hex-Ziffern, aber nur 22 Zeichen als Base64URL ohne Auffüllung.
Akzeptierte Hex-Formate
Bei Hex-Ziffern spielt die Groß- und Kleinschreibung keine Rolle. Vor dem Dekodieren entfernt der Konverter Leerraum, Zeilenumbrüche, Doppelpunkte, Semikolons, Kommas, Bindestriche sowie die Präfixe 0x, \x, % und &#x. Damit sind OpenSSL-Fingerprints wie AB:CD:EF, C-Arrays wie 0x12, 0x34, maskierte Strings wie \x12\x34, prozentkodierte Bytes und UUIDs mit Bindestrichen abgedeckt.
Nach der Bereinigung muss die Eingabe eine gerade Anzahl von Ziffern enthalten, zwei pro Byte. Eine ungerade Anzahl wird als Fehler gemeldet und bedeutet meist, dass eine führende Null verloren gegangen ist, zum Beispiel abc statt 0abc.
Die Bytes kodieren, nicht den Hex-Text
Ein häufiger Fehler besteht darin, einen Hex-Hashwert in einen gewöhnlichen Text-zu-Base64-Encoder einzufügen. Dieser kodiert dann die Zeichen 0-9a-f statt der Bytes, für die sie stehen, und das Ergebnis ist doppelt so lang wie richtig: 88 Zeichen für einen SHA-256-Hashwert statt 44. Alles, was den binären Hashwert erwartet, etwa ein SRI-Attribut oder ein Prüfsummen-Header, weist einen solchen Wert zurück. Dieser Konverter dekodiert das Hex zuerst in Bytes.
# Shell: Hex-Hashwert in Base64
printf '%s' "$HEX" | xxd -r -p | base64
# SRI-Wert für eine Datei in einem Schritt
openssl dgst -sha384 -binary script.js | openssl base64 -A
# Python
base64.b64encode(bytes.fromhex(h)).decode()
// Node.js (bricht beim ersten Nicht-Hex-Zeichen stillschweigend ab)
Buffer.from(h, 'hex').toString('base64')
Häufig gestellte Fragen
Warum erhalte ich für meinen Hex-String eine Fehlermeldung?
Entweder enthält die Eingabe ein Zeichen, das keine Hex-Ziffer ist, etwa den Buchstaben O statt einer Null, oder die Anzahl der Ziffern ist ungerade. Die Fehlermeldung nennt die Position des ungültigen Zeichens; prüfen Sie bei einer ungeraden Länge, ob eine führende 0 fehlt.
Wie lang wird die Base64-Ausgabe?
=-Zeichens.Wie erstelle ich einen Subresource-Integrity-Hash?
integrity="sha384-..." mit dem Base64-Wert. Mit OpenSSL gelingt das in einem einzigen Befehl: openssl dgst -sha384 -binary file.js | openssl base64 -A.Ist die Ausgabe Standard-Base64 oder URL-sicher?
+ und /, wie es SRI, CSP und HTTP-Prüfsummen-Header verlangen. Wählen Sie unter „Nach“ Base64URL als Zielformat, wenn Sie eine URL-sichere Ausgabe benötigen.