Base64 to reprezentacja bajtów przy użyciu ograniczonego alfabetu tekstowego. Jest to przydatne, gdy transport akceptuje tekst, ale ładunek jest binarny. Operacja jest odwracalna: poprawny dekoder odzyskuje oryginalne bajty, w tym zera i wartości, które nie są prawidłowymi znakami. Wybór sposobu interpretacji tych bajtów to osobny krok.
Trzy bajty stają się czterema znakami
Bajt zawiera osiem bitów. Trzy bajty dostarczają 24 bity, które są równomiernie podzielone na cztery grupy po sześć. Każda grupa wybiera jeden z 64 znaków alfabetu. Standardowy alfabet zawiera wielkie i małe litery, cyfry, plus i ukośnik. Dla tekstu ASCII Man, bajty są 4d 61 6e w formacie szesnastkowym, a zakodowany wynik to TWFu.
Input bytes: 01001101 01100001 01101110
Six-bit sets: 010011 010110 000101 101110
Indexes: 19 22 5 46
Output: T W F u
Dopełnienie opisuje ostatnią grupę
Gdy pozostaje jeden bajt, na wyjściu znajdują się dwa znaki alfabetu i dwa znaki równości. Dwa pozostałe bajty dają trzy znaki alfabetu i jeden znak równości. Zatem M staje się TQ==, podczas Ma staje się TWE=. Dopełnienie jest częścią struktury: dodawanie przypadkowych znaków równości nie odzyska brakującego znaku danych. W kodowaniu kanonicznym nieużywane bity ostatniego znaku alfabetu również muszą być równe zeru.
Dla n bajtów wejściowych wynik z dopełnieniem zawiera 4 × ceil(n / 3) znaków. Plik o rozmiarze 1024 bajtów daje zatem 1368 znaków przed dodaniem prefiksu Data URI lub podziałów wierszy. Base64 nie kompresuje danych, choć osobna warstwa kompresji podczas przesyłania może zmniejszyć końcowy rozmiar transferu.
Sprawdź przed interpretacją
Używaj trybu ścisłego podczas testowania producenta zgodnie ze zdefiniowanym protokołem. Użyj trybu zgodności, jeśli znane źródło wstawiło ASCII podziały wierszy, pominęło dopełnienie lub dodało opakowanie Data URI. Przejrzyj zarejestrowane korekty. Nieoczekiwana interpunkcja, mieszane alfabety i niezerowe nieużywane bity zasługują na zbadanie, a nie na ciche usunięcie.
Na koniec sprawdź zdekodowane bajty. Prawidłowy Base64 może zawierać nieprawidłową sekwencję UTF-8, obcięty obraz lub niekompletny PDF. Pomyślne dekodowanie potwierdza tylko warstwę kodowania. Zapisz wyniki binarne jako bajty i użyj odpowiedniego parsera plików, aby sprawdzić ich strukturę. Reguły alfabetu, dopełnienia i bitów kanonicznych są określone w RFC 4648.