+ - , / by _ i usuwa wypełnianie = (RFC 4648 §5).Jak to działa
Base64 reprezentuje dane za pomocą 64 drukowalnych znaków ASCII. Każde 3 bajty wejścia stają się 4 znakami, dlatego wynik zajmuje około 33% więcej niż oryginał.
To nie szyfrowanie ani kompresja: to odwracalne kodowanie, które każdy może zdekodować. Służy do przesyłania danych binarnych kanałami przeznaczonymi tylko dla tekstu.
Wariant URL-safe (RFC 4648 §5) używa - i _ zamiast + i / oraz pomija wypełnienie =, aby móc umieścić wynik w adresach URL i nazwach plików bez escape'owania.
Przykłady
Hello WorldSGVsbG8gV29ybGQ=CaféQ2Fmw6k=W UTF-8 znaki spoza ASCII zajmują więcej niż jeden bajt, dlatego „é” dodaje dwa bajty.>>>?estándar: Pj4+Pw== · URL-safe: Pj4-PwWariant URL-safe zastępuje + i / znakami - i _ oraz usuwa wypełnienie =.Przypadki użycia
- Osadzać obrazy, czcionki lub ikony bezpośrednio w HTML/CSS za pomocą data URI.
- Wysyłać załączniki e-mail (MIME) lub dane binarne wewnątrz JSON.
- Przechowywać klucze, certyfikaty lub tokeny w zmiennych środowiskowych i plikach konfiguracyjnych.
- Zakodować poświadczenia do nagłówka Authorization: Basic protokołu HTTP.
Najczęstsze pytania
Czy Base64 to metoda szyfrowania?
Nie. To odwracalne kodowanie bez klucza: każdy może je zdekodować. Nie zapewnia żadnego bezpieczeństwa; aby chronić dane, trzeba je zaszyfrować.
Dlaczego wynik kończy się na „=”?
Znak „=” to wypełnienie (padding) uzupełniające bloki po 4 znaki, gdy dane wejściowe nie są wielokrotnością 3 bajtów. Wariant URL-safe go pomija.
Kiedy wariant URL-safe jest lepszy?
Gdy wartość trafia do URL, nazwy pliku lub identyfikatora, ponieważ znaki + i / mają w tych kontekstach specjalne znaczenie.
Dlaczego zakodowany tekst jest dłuższy niż oryginał?
Ponieważ używa 4 znaków na każde 3 bajty wejścia, więc rozmiar rośnie o około 33%.
Czy mój tekst jest wysyłany na serwer?
Nie. Kodowanie i dekodowanie odbywają się w całości w przeglądarce.