Base32 Encoder & Decoder
Kodieren Sie Text als Base32 nach RFC 4648, dem Alphabet aus A–Z und 2–7 hinter Authenticator-Schlüsseln: Aus Hello wird JBSWY3DP. Beim Dekodieren sind Kleinbuchstaben und Zeilenumbrüche erlaubt, fremde Zeichen werden abgelehnt. Kostenlos in Ihrem Browser.
- Kostenlos
- Läuft in Ihrem Browser
- Ohne Anmeldung
- Ihre Daten bleiben auf Ihrem Gerät
Im Browser ausführen – kostenlos
Rechenbeispiel
- Text
- Hello
- Berechnungsmodus
- Encode
- Ergebnis
- JBSWY3DP
- Länge
- 8
- Eingabebytes
- 5
- Zeichenvorrat
- RFC4648
Base32 wandelt beliebigen UTF-8-Text in eine kompakte Zeichenkette um, die nur aus den Buchstaben A bis Z und den Ziffern zwei bis sieben besteht, optional mit Gleichheitszeichen aufgefüllt, damit jeder Block auf einer Acht-Zeichen-Grenze endet. Anders als Base64 verzichtet das Alphabet auf Plus, Schrägstrich und andere Satzzeichen, die URLs, Shell-Argumente oder Dateisysteme ohne Groß-/Kleinschreibung stören – genau deshalb werden geheime Seeds, TOTP-Schlüssel und viele Protokoll-Tokens weiterhin als Base32 ausgeliefert. Diese Fähigkeit implementiert das Alphabet aus RFC 4648 Abschnitt sechs vollständig: Der Kodier-Modus liest Ihren Klartext als UTF-8-Bytes und gibt ein aufgefülltes Base32-Ergebnis aus; der Dekodier-Modus akzeptiert Base32 in beliebiger Groß-/Kleinschreibung, entfernt Leerraum, prüft jedes Zeichen und liefert den ursprünglichen UTF-8-Text zurück.
Wie RFC 4648 Base32 Bits in A-Z und 2-7 packt
RFC 4648 Abschnitt sechs definiert ein Alphabet aus zweiunddreißig Symbolen: die sechsundzwanzig lateinischen Großbuchstaben gefolgt von den sechs Ziffern zwei bis sieben. Die Kodierung beginnt bei den Rohbytes. Bei Text wandelt diese Fähigkeit Ihre Zeichenkette zunächst mit UTF-8 um, damit Mehrbyte-Zeichen sprach- und plattformübergreifend portabel bleiben.
Diese Bytes werden dann als fortlaufender Bitstrom gelesen. Jeweils fünf Bits wählen einen Alphabet-Index und ergeben ein Base32-Zeichen. Fünf Eingabebytes liefern vierzig Bits, die sich sauber in acht Base32-Zeichen aufteilen; kürzere Reste hinterlassen ein unvollständiges letztes Quintett, das rechts mit Nullbits aufgefüllt und anschließend mit Gleichheitszeichen ergänzt wird, sodass die Gesamtlänge stets ein Vielfaches von acht ist.
Das Dekodieren kehrt die Abbildung um: Jedes Nicht-Füllzeichen trägt fünf Bits bei, volle Bytes werden ausgegeben, sobald acht Bits gesammelt sind, und abschließende Füllzeichen werden auf zulässige Platzierung geprüft. Leerraum wird ignoriert, damit mehrzeilige Tokens aus E-Mails weiterhin funktionieren. Kleinbuchstaben werden vor der Suche in Großbuchstaben gewandelt.
Der auf dieser Seite implementierte Standard ist das klassische RFC-4648-Base32-Alphabet, nicht Base32hex und nicht Crockford Base32, die andere Symboltabellen verwenden und die Interoperabilität mit TOTP und vielen älteren APIs zerstören würden.
Was Sie senden und was Sie zurückerhalten
Senden Sie ein erforderliches String-Feld namens text und ein optionales Feld mode mit dem Wert encode oder decode. Fehlt mode, ist encode die Vorgabe, sodass schon eine einzelne Nutzlast sinnvolle Arbeit leistet. Der Modus encode behandelt text als reinen UTF-8-Inhalt und liefert einen Ergebnis-String im RFC-4648-Alphabet mit Padding.
Der Modus decode behandelt text als Base32, normalisiert Groß-/Kleinschreibung und Leerraum, validiert das Alphabet und gibt die wiederhergestellte UTF-8-Zeichenkette in result zurück. Beide Richtungen spiegeln mode, den ursprünglichen text, result, ein Längenfeld für den primären Ausgabe-String, Alphabet- und Zeichensatz-Bezeichnungen, ein Padding-Flag und einen kurzen Standard-Verweis-String, damit Clients prüfen können, welches Profil getroffen wurde. Klassische Prüfungen sind das Kodieren von Hello zu JBSWY3DP, das Kodieren des einzelnen Buchstabens f zu MY mit sechs Gleichheitszeichen und das Dekodieren eines bekannten aufgefüllten Blocks zurück zu foobar.
Wo Base32-Kodierung in der Praxis auftaucht
Geheimnisse für zeitbasierte Einmalpasswörter nach RFC 6238 und Authenticator-Apps reisen fast immer als Base32, damit Anwender sie abtippen können, ohne null mit dem Buchstaben O oder eins mit dem Buchstaben I so leicht zu verwechseln wie bei Base64. DNS und einige Netzwerk-Konfigurationssysteme bevorzugen Base32-ähnliche Alphabete für undurchsichtige Labels, die das Falten der Groß-/Kleinschreibung überstehen müssen. Mobile Deep Links und kurze Offline-Tokens wählen häufig Base32, weil der Zeichensatz nach der Normalisierung unempfindlich gegenüber Groß-/Kleinschreibung ist und URL-reservierte Zeichen vermeidet.
Support-Teams fügen mehrzeilige Geheimnisse aus Tickets ein und brauchen Leerraum-Toleranz, ohne ungültige Zeichen zu akzeptieren, die einen falschen Schlüssel erzeugen würden. Autoren von Lehrmaterial zu Kodierungsverfahren wünschen eine eigene Seite für Base32, statt es unter einer generischen Base64-Landingpage zu verstecken, denn Suchintention und Alphabet-Regeln unterscheiden sich. Wenn Sie Base64 mit URL-sicherem Alphabet, Prozent-Kodierung für URLs oder Integer-Konvertierung zwischen Basen benötigen, behandeln Sie diese als eigenständige Suchintentionen und Landingpages, statt diese Base32-Encoder-Seite zu überladen.
Anwendungsfälle
Austausch von TOTP- und Authenticator-Geheimnissen
Kodieren Sie neu erzeugte gemeinsame Geheimnisse als RFC 4648 Base32 für Authenticator-Apps oder dekodieren Sie eingefügte Base32-Seeds bei Kontowiederherstellung und Import.
Groß-/Kleinschreibung-sichere Tokens für Konfigurationen und Links
Erzeugen Sie Base32-Labels, die das Falten der Groß-/Kleinschreibung überstehen und die Satzzeichen + / vermeiden, wenn undurchsichtige Kennungen in DNS-ähnliche Namen oder Deep Links eingebettet werden.
Häufige Fragen
Welches Base32-Alphabet wird hier verwendet?
RFC 4648 Abschnitt sechs: Großbuchstaben A-Z und Ziffern 2-7, mit '='-Padding auf ein Vielfaches von acht Zeichen. Es ist weder Base32hex noch Crockford Base32.
Kann ich sowohl kodieren als auch dekodieren?
Ja. Setzen Sie mode auf encode (Vorgabe), um reinen UTF-8-Text in Base32 zu wandeln, oder auf decode, um Text aus einem Base32-String wiederherzustellen.
Wird Base32 in Kleinbuchstaben beim Dekodieren akzeptiert?
Ja. Buchstaben werden vor der Alphabet-Suche in Großbuchstaben gewandelt. Leerraum wird entfernt, sodass mehrzeilige Einfügungen weiterhin funktionieren.
Warum endet mein Base32-Ergebnis mit Gleichheitszeichen?
Das ist die Auffüllung, damit die Gesamtlänge immer ein Vielfaches von acht ist. Fünf Bytes füllen genau acht Zeichen, wie Hello in JBSWY3DP, ein einzelnes f dagegen wird zu MY mit sechs Gleichheitszeichen.
Ist das Crockford-Base32 oder Base32hex?
Nein. Verwendet wird das klassische Alphabet aus RFC 4648. Crockford-Base32 und Base32hex nutzen andere Zeichentabellen, und ihre Ergebnisse passen nicht zu TOTP-Schlüsseln und vielen älteren Systemen, die das klassische Alphabet erwarten.
Verwandte Tools
Für Entwickler — API-Zugang
Alles auf dieser Seite ist auch per API verfügbar. Dieser Abschnitt richtet sich an Teams, die es in ihre eigenen Systeme einbinden möchten; alle anderen nutzen einfach das Tool oben.
Endpunkt
Authentifizierung per Bearer-Token. Ein einziger POST stellt die Aufgabe in die Warteschlange; das Ergebnis erhalten Sie per Webhook oder über einen signierten Link.
Aufruf aus Ihrem Stack
curl -X POST https://api.kit.forhosting.com/enc/base32 \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Hello"}'const res = await fetch("https://api.kit.forhosting.com/enc/base32", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Hello"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/base32",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Hello"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/base32", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Hello"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Hello"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/base32", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Beispiel-Anfrage
{
"text": "Hello"
}Beispiel-Antwort
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.base32",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}Die API arbeitet asynchron: Sie erhalten sofort eine task_id. Polling ist mit 1 Anfrage pro Sekunde erlaubt.
Preis
Der Preis steht auf der Seite – keine Tokens, keine Credits. Fehlgeschlagene Aufgaben werden nicht berechnet.
Fehler
| HTTP | Code | Bedeutung |
|---|---|---|
401 | unauthorized | Der API-Schlüssel fehlt oder ist ungültig – prüfen Sie den Authorization-Header (Bearer). |
402 | insufficient_balance | Ihr Guthaben reicht für diese Aufgabe nicht aus – Aufladungen verfallen nicht. |
404 | unknown_type | Unbekannter Aufgabentyp – prüfen Sie das Feld „type“ gegen den Katalog. |
429 | rate_limited | Zu viele Anfragen – warten Sie kurz; Polling ist mit 1 Anfrage pro Sekunde erlaubt. |
Technische Hinweise
Ein unzulässiges Zeichen beim Dekodieren schlägt sofort mit invalid_input fehl, damit fehlerhafte Einfügungen niemals still Daten beschädigen.
Wie RFC 4648 Base32 Bits in A-Z und 2-7 packt
Jedes Zeichen außerhalb von A-Z, zwei bis sieben und dem Füll-Gleichheitszeichen löst einen invalid_input-Fehler aus, der Position und beanstandetes Zeichen nennt. Diese strenge Ablehnung ist Absicht: Ein stilles Ersetzen würde Übertragungsfehler in Authenticator-Geheimnissen und Übertragungsformaten verbergen. Der gesamte Pfad ist deterministische, gleitkommafreie Integer-Arbeit ohne Netzwerk, ohne Zufallsseeds und ohne Zeitstempel, sodass identische Eingaben stets identisches JSON erzeugen.
Was Sie senden und was Sie zurückerhalten
Encode meldet außerdem input_bytes; decode meldet output_bytes. Fehlender text, Nicht-String-Objekte, nicht unterstützte mode-Werte, Zeichenketten über dem dokumentierten Maximum, unzulässige Base32-Zeichen, Padding nach einem Nicht-Füllzeichen, zu viele Füllzeichen oder Längen, die kein Vielfaches von acht sind, schlagen alle mit invalid_input und einer klaren englischen Meldung fehl. Validierungsfehler verbrauchen kein Prepaid-Guthaben. Der Preis erfolgreicher API-Aufrufe ist die veröffentlichte Basis von $0.002 pro Element.
Wo Base32-Kodierung in der Praxis auftaucht
Bereitstellungs-QR-Payloads und Backup-Codes brauchen daher einen zuverlässigen Kodierpfad beim Erzeugen von Schlüsseln und einen strikten Dekodierpfad beim Importieren. Da diese Fähigkeit eine reine parse-Engine ist, beträgt der API-Preis die veröffentlichte Basis von $0.002 pro erfolgreichem Element, und fehlgeschlagene Validierung wird nicht berechnet.
Integrationsbeispiele
Sprachübergreifende golden-Testvektoren
Erzeugen Sie Encode- und Decode-Fixtures, die zu Python, Go und OpenSSL Base32 passen, damit mehrsprachige CI eine gemeinsame Wahrheit teilt.
Technische Fragen
Was passiert, wenn der Base32-String ein ungültiges Zeichen enthält?
Das Dekodieren schlägt mit invalid_input fehl und nennt Position und unzulässiges Zeichen. Für Validierungsfehler wird nichts berechnet.
Was kostet das?
Das Browser-Tool ist kostenlos und läuft lokal. API-Anfragen nutzen Prepaid-KIT-Guthaben zu $0.002 pro erfolgreichem Element; ungültige Eingaben werden nicht berechnet.