Zuerst das Ziel bestimmen
Bevor Sie ein Werkzeug auswählen, klären Sie, wohin der Wert gelangt. HTML-Entities stellen Zeichen wie das kaufmännische Und im HTML-Text dar. Prozentkodierung bereitet einen Wert für eine URL-Komponente vor, in der Leerzeichen und reservierte Zeichen eindeutig dargestellt werden müssen. Base64 bildet beliebige Bytes auf ein begrenztes Textalphabet ab; das hilft beim Transport binärer Daten durch textorientierte Systeme. Ein SHA-256-Hash ist ein Fingerabdruck fester Länge zum Vergleichen von Daten und kein Verfahren zur Wiederherstellung des Originals. Keines dieser vier Verfahren ist Verschlüsselung. Für vertrauliche Daten brauchen Sie ein passendes authentifiziertes Verschlüsselungsverfahren statt bloßer Tarnung mit Base64 oder einem Hash.
Eine Eingabe, vier Ergebnisse
Nehmen wir den Text A&B. In normalem HTML-Text kann das Und-Zeichen als A&B geschrieben werden; der Browser zeigt wieder A&B an. Als URL-Komponente wird daraus A%26B, weil ein unkodiertes Und-Zeichen Parameter trennen kann. UTF-8 stellt die drei sichtbaren Zeichen als Hexadezimalbytes 41 26 42 dar, und Standard-Base64 macht daraus QSZC. Ein SHA-256-Werkzeug erzeugt dagegen einen langen hexadezimalen Hashwert; eine kleine Eingabeänderung ergibt normalerweise einen ganz anderen Wert. Diese Ausgaben sind nicht austauschbar: Base64 kann in einer URL reservierte Zeichen enthalten, und ein Hash kann den ursprünglichen Text nicht zurückliefern.
- A&B — Ausgangstext
- HTML: A&B · URL: A%26B
- Base64: QSZC · SHA-256: Hash
Umkehrbarkeit und Sicherheit
HTML-Entities, Prozentkodierung und Base64 sind umkehrbar, wenn Kontext und Eingabekodierung bekannt sind. Gerade deshalb schützen sie keine Geheimnisse: Jeder kann Base64 ohne Schlüssel dekodieren. SHA-256 ist als Einwegfunktion ausgelegt, doch ein vorhersehbares Passwort nur mit SHA-256 zu hashen, ist keine sichere Passwortspeicherung; dafür braucht man ein spezielles Verfahren mit Salt. Ein Hash allein belegt ohne authentifiziertes Protokoll auch nicht, wer Daten geliefert hat. Im Web hängt das Escaping vom Kontext ab: HTML-Text, Attribut, URL und JavaScript-Quelltext folgen unterschiedlichen Regeln. Eine für einen Kontext maskierte Zeichenfolge in einen anderen zu kopieren, kann unsicher sein.
Ein praktischer Ablauf
Bestimmen Sie zuerst Rohtext und Zielformat. Beim Einfügen in HTML-Text stellen Sie erforderliche Zeichen als Entities dar; in einer Anwendung sollte ein vertrauenswürdiges Templatesystem das Markup behandeln. Für einen einzelnen URL-Parameter kodieren Sie dessen Wert genau einmal und fügen ihn danach an. Verlangt eine Schnittstelle Base64, wandeln Sie den Text zuerst mit der vereinbarten Zeichencodierung, meist UTF-8, in Bytes um. Zum Integritätsvergleich zweier Bytefolgen berechnen Sie mit demselben Algorithmus ihre Hashwerte und vergleichen diese. Behalten Sie die Originalbytes, falls die Nachricht später wieder angezeigt werden muss.
Den Rückweg prüfen
Testen Sie bei umkehrbaren Verfahren stets den passenden Decoder. Achten Sie auf doppelte Kodierung: Wird A%26B erneut kodiert, entsteht %25, und ein Dekodierschritt entfernt nur eine Ebene. Prüfen Sie, ob der Base64-Empfänger das Standardalphabet, die URL-sichere Variante oder Füllzeichen verlangt. Bei Hashes zählen die exakten Bytes einschließlich Zeilenumbrüchen und abschließenden Leerzeichen; optisch ähnlicher Text kann verschiedene Hashwerte liefern. Mit dem eingebetteten Base64-Konverter unten lässt sich der umkehrbare Fall ausprobieren. Für HTML, URL und SHA-256 stehen die verlinkten Werkzeuge bereit. Wählen Sie das Ergebnis nach dem tatsächlichen Format des Empfängers. Kodieren Sie bei einer URL nur den einzelnen Parameterwert, nicht versehentlich die gesamte Adresse mit Trennzeichen und Schema. Prüfen Sie bei HTML, ob der Wert als Text oder Attribut eingefügt wird; die Behandlung des Zielkontexts muss genau dazu passen.