Co to jest Base64?

Base64 to metoda konwersji dowolnych danych binarnych, danych składających się z więcej niż zwykłych znaków tekstowych, na wiadomość tekstową, którą można następnie przesłać przez sieć komputerową. To się nazywa kodowanie. Podczas gdy wyjście wiadomości zakodowanej w base64 nie jest czymś, co człowiek może łatwo zrozumieć, nadal składa się z 64 popularnych znaków języka angielskiego, od których pochodzi nazwa, z dodatkowym 65. znakiem używanym do celów specjalnych.

Pomysł na base64 pojawił się, gdy pojawiła się potrzeba uzyskania więcej niż prostych znaków tekstowych za pośrednictwem komunikacji sieciowej, takiej jak e-mail. Pierwsze wiadomości e-mail zaczynały się jako znaki zakodowane w amerykańskim standardowym kodzie wymiany informacji (ASCII), metodzie kodowania używanej w komputerach do przedstawiania znaków alfabetu angielskiego jako tekstu na wyświetlaczach lub drukarkach. Ponieważ dodatkowe informacje binarne były potrzebne do przejścia, opracowano nowe schematy kodowania.

Metoda kodowania base64 została po raz pierwszy opisana w tzw. standardzie MIME (Multipurpose Internet Mail Extensions). Metody zdefiniowane w standardzie MIME, za pomocą których inne znaki, które nie były zakodowane w ASCII, takie jak alfabety używane w językach innych niż angielski, a także inne dowolne dane binarne, mogą być również kodowane w sekwencje ASCII i przesyłane za pośrednictwem wiadomości e-mail. Z dwóch podstawowych sposobów kodowania opisanych przez standard MIME, base64 dzieli rolę z innym znanym jako cytowany drukowalny. Podczas gdy cytowana metoda drukowalna jest w stanie rozszerzyć ASCII nieco poza swoje ograniczone 94 znaki drukowalne, base64 może wziąć dowolną sekwencję bajtów i przekonwertować ją na sekwencję ASCII.

Base64 musi pobierać ciągi danych, które w przeciwnym razie nie spełniałyby standardu ASCII, i konwertować je na ASCII. Aby to zrobić, metoda kodowania polega na gromadzeniu danych w grupach po trzy bajty i przekształcaniu ich w cztery liczby, które reprezentują odpowiednie znaki ASCII. Ponieważ bajt ma osiem bitów, gdzie każdy bit jest reprezentowany przez jeden lub zero, trzy bajty są połączone od końca do końca, a cała sekwencja trafia do 24-bitowego bufora. 24 jedynki i zera są następnie dzielone na cztery grupy po sześć bitów, z których każda ma przypisane liczby pasujące do znaku ASCII.

Ponieważ base64 może kodować dowolne dane binarne, przez ten proces może przejść dowolna sekwencja bajtów. Istnieje jednak pewien haczyk w tych przypadkach, w których liczba bajtów do zakodowania nie jest podzielna przez trzy, aby bity mogły zmieścić się w buforze. Jeśli sekwencja bajtów zawiera, powiedzmy, cztery lub pięć bajtów, nadal potrzeba czegoś do wypełnienia bufora i uzupełnienia pełnych 24 bitów. W takich przypadkach każdy brakujący bajt jest reprezentowany przez osiem zer i jest następnie konwertowany na znaki wypełniające w gotowym kodowaniu. Stąd pochodzi wspomniany wcześniej 0 znak, reprezentowany w zakodowanej wiadomości znakiem równości (=); pojawia się tylko na samym końcu kodowania, jeśli konieczne jest wypełnienie.

Chociaż base64 został pierwotnie opracowany do przesyłania danych binarnych za pośrednictwem wiadomości e-mail, jego użycie weszło w grę w wielu innych obszarach poza MIME. Jednym z takich dość powszechnych zastosowań jest stosowanie internetowych baz danych i aplikacji do kodowania danych w celu utworzenia jednolitego lokalizatora zasobów (URL) w formularzu internetowym. Rozszerzalny język znaczników (XML) wykorzystuje również wariant, który umożliwia umieszczanie danych binarnych, takich jak małe obrazy, w dokumentach XML. Istnieją inne odmiany metod szyfrowania i innych technik związanych z bezpieczeństwem, takich jak ukrywanie haseł.