Base64 — co to jest, jak działa i dlaczego to nie jest szyfrowanie
Base64 zamienia dowolne dane binarne na zwykły tekst. Spotkasz go w załącznikach e-mail, obrazkach wklejonych w CSS i tokenach logowania. Wyjaśniamy zasadę działania na przykładzie.
Wiele systemów — poczta e-mail, adresy URL, pliki JSON i XML — zostało zaprojektowanych do przesyłania tekstu, a nie dowolnych bajtów. Base64 pozwala „przemycić” plik binarny (obraz, PDF, klucz) przez taki kanał, zapisując go 64 bezpiecznymi znakami.
Alfabet Base64
Używane są: wielkie litery A–Z (wartości 0–25), małe a–z (26–51), cyfry 0–9 (52–61) oraz znaki + (62) i / (63). Znak = służy do dopełnienia na końcu.
Jak to działa — przykład „Kot”
- Tekst zamieniamy na bajty: K = 75, o = 111, t = 116.
- Zapisujemy je dwójkowo: 01001011 01101111 01110100 (24 bity).
- Dzielimy na grupy po 6 bitów: 010010 110110 111101 110100.
- Każda grupa to liczba 0–63: 18, 54, 61, 52 → znaki S, 2, 9, 0.
„Kot” → S290
Trzy bajty dają zawsze cztery znaki. Jeśli liczba bajtów nie dzieli się przez 3, na końcu dopisuje się = lub ==.
Base64 zwiększa rozmiar
Z 3 bajtów powstają 4 znaki, więc dane rosną o ok. 33% (plus ewentualne łamanie linii co 76 znaków w e-mailach). Obraz 300 KB zapisany w Base64 zajmie ok. 400 KB.
Gdzie się go używa
- Załączniki e-mail (MIME) — pliki w wiadomościach są kodowane w Base64.
- Adresy data: — mały obrazek wklejony bezpośrednio w HTML lub CSS:
data:image/png;base64,iVBOR…. - Tokeny JWT — nagłówek i treść tokenu to JSON zakodowany wariantem Base64URL.
- Uwierzytelnianie HTTP Basic — login i hasło przesyłane w nagłówku jako Base64.
Base64URL
Znaki + i / mają specjalne znaczenie w adresach URL, dlatego wariant Base64URL zastępuje je przez - i _ i zwykle pomija =. Jeśli dekodowanie tokenu kończy się błędem, sprawdź, czy to nie ten wariant.
To nie jest szyfrowanie
Base64 nie ma klucza — każdy może odkodować dane jednym kliknięciem. Hasło w nagłówku HTTP Basic jest chronione tylko dzięki połączeniu HTTPS, a nie dzięki Base64. Do ochrony danych służy szyfrowanie, a do sprawdzania integralności — skróty kryptograficzne.
Polskie znaki
Przed kodowaniem tekst musi zostać zamieniony na bajty — dziś niemal zawsze w UTF-8, gdzie „ą” to dwa bajty. Jeśli po odkodowaniu widzisz „Ä…” zamiast „ą”, dane zakodowano w innym kodowaniu niż odczytujesz.
Tekst i pliki zakodujesz i odkodujesz — z obsługą UTF-8, wariantu URL-safe i adresów data: — w narzędziu Base64. Kody poszczególnych znaków sprawdzisz w konwerterze ASCII.
Narzędzia do tego poradnika
Base64kodowaniedata URIe-mailJWT