Decodex

DECODEX · BASE64 · UTF-8

Base64-padding: waarom = of ==?

Leer hoe Base64-padding werkt en waarom Zg, Zg= en Zg== verschillend worden behandeld.

Base64 zet groepen van drie bytes om in vier tekens. Het teken = vult de laatste groep aan als er bytes ontbreken. Het is padding en stelt geen letter uit de oorspronkelijke tekst voor.

Tel bytes, geen letters

Eén resterende byte vraagt om ==, twee om = en drie om geen padding. f wordt Zg==, fo wordt Zm8= en foo wordt Zm9v. Tel UTF-8-bytes: een letter met accent of een emoji kan meerdere bytes gebruiken.

Ontbrekende padding herstellen

Na het verwijderen van witruimte kan een lengte modulo 4 van 2 worden aangevuld met ==, en een rest van 3 met =. Een rest van 1 is onmogelijk voor volledige Base64-data; extra = lossen dat niet op. Controleer ook alfabet en protocol.

Omissie is niet hetzelfde als foutieve padding

Decodex accepteert Zg en Zg==, maar weigert Zg= vanwege onvolledige aanwezige padding. Ook A=AA en Zg=== worden geweigerd. Verwijder geen willekeurige tekens om beschadigde gegevens te verbergen. Sommige protocollen vereisen exacte padding, andere laten deze weg.

Probeer dit voorbeeld

TekstUTF-8 bytesBase64Padding
f1Zg====
fo2Zm8==
foo3Zm9v—

Probeer dit voorbeeld →

Base64 → UTF-8 · UTF-8 → Base64

Veelgestelde vragen

Is een reeks zonder = altijd fout?

Nee. Bij een byteaantal dat deelbaar is door drie is padding niet nodig. Sommige protocollen laten padding ook bewust weg.

Bronnen

Meer Base64-handleidingen