← Wszystkie narzędzia

Kodowanie i dekodowanie Base64

Koduj i dekoduj Base64 natychmiast w przeglądarce. Dowiedz się, czym jest Base64, dlaczego zwiększa rozmiar o 33% i dlaczego to kodowanie, a nie szyfrowanie.

Czym jest Base64 i dlaczego istnieje

Base64 to schemat kodowania binarno-tekstowego. Bierze surowe bajty — takie, z których składają się obrazy, archiwa, klucze kryptograficzne lub cokolwiek innego, co nie jest zwykłym tekstem — i przepisuje je przy użyciu małego, bezpiecznego alfabetu 64 drukowalnych znaków: 26 wielkich liter A–Z, 26 małych liter a–z, dziesięciu cyfr 0–9 oraz dwóch dodatkowych symboli, zwykle + i /. Znak równości służy do uzupełniania na końcu. Ponieważ każdy wytworzony znak jest zwykłym ASCII, wynik może przechodzić przez systemy zaprojektowane wyłącznie do obsługi tekstu.

To właśnie był powód wynalezienia Base64. Wiele starszych protokołów — klasycznym przykładem jest poczta elektroniczna — zakłada, że przenoszone treści są tekstem. Jeśli podasz im surowe dane binarne, niektóre bajty zostaną uszkodzone, usunięte lub zinterpretowane jako znaki sterujące, a dane dotrą na miejsce przekłamane. Base64 omija ten problem, konwertując bajty na postać, którą każdy kanał bezpieczny dla tekstu przepuści bez zmian. Oryginalne dane można następnie dokładnie odtworzyć po drugiej stronie.

Abstrakcyjny świecący strumień danych binarnych przekształcający się w strumień znaków tekstowych na ciemnoniebieskim tle z cyjanowym i złotym światłem
Base64 przekształca surowe bajty w bezpieczny, przyjazny dla tekstu strumień znaków.

Jak działa konwersja

Mechanicznie Base64 grupuje dane wejściowe w porcje po trzy bajty — czyli 24 bity — a następnie dzieli te 24 bity na cztery grupy po sześć bitów każda. Sześć bitów może przyjąć 64 różne wartości, dlatego właśnie alfabet ma 64 znaki. Trzy bajty wejściowe stają się więc czterema znakami wyjściowymi. Gdy długość danych wejściowych nie jest wielokrotnością trzech, koder uzupełnia ostatnią grupę jednym lub dwoma znakami =, by dekoder wiedział, gdzie kończą się prawdziwe dane.

To właśnie z tego stosunku cztery-do-trzech pochodzi słynna kara za rozmiar: wynik kodowania Base64 jest o około 33% większy od oryginalnych danych. Jeśli zakodowany tekst jest zawijany do wierszy o stałej szerokości, jak tego wymagają standardy e-mailowe, podziały wierszy dodają jeszcze kilka dodatkowych procent. Narzut jest ceną kompatybilności i w większości zastosowań jest to uczciwy kompromis.

Gdzie spotykamy Base64

Gdy już wiesz, czego szukać, Base64 pojawia się wszędzie w codziennym korzystaniu z komputera:

  • Data URI. Mały obraz lub czcionka może być osadzona bezpośrednio w HTML lub CSS za pomocą URI data:, gdzie zawartość pliku jest zapisana jako Base64. Przeglądarka dekoduje go na bieżąco, oszczędzając oddzielne żądanie sieciowe.
  • Załączniki e-mail. MIME, standard pozwalający poczcie przenosić pliki, opiera się na Base64, by przesyłać binarne załączniki przez system poczty obsługujący wyłącznie tekst bez ich uszkadzania.
  • Uwierzytelnianie HTTP Basic. Znany nagłówek Authorization: Basic ... to po prostu nazwa użytkownika i hasło połączone dwukropkiem i zakodowane w Base64 — właśnie dlatego uwierzytelnianie Basic musi zawsze działać przez HTTPS.
  • Tokeny i konfiguracja. JSON Web Tokeny, certyfikaty, klucze SSH i niezliczone wartości konfiguracyjne są przechowywane lub przesyłane jako Base64, dzięki czemu przeżywają kopiowanie i wklejanie oraz przechowywanie tekstowe.

Kodowanie to nie szyfrowanie

To najważniejsza rzecz do zrozumienia i pułapka, w którą wpadają zarówno początkujący, jak i doświadczeni programiści. Base64 nie jest szyfrowaniem i nie zapewnia żadnego bezpieczeństwa. Nie ma tajnego klucza, hasła ani niczego prywatnego. Transformacja jest w pełni publiczna i całkowicie odwracalna: każdy, kto zobaczy ciąg Base64, może go zdekodować z powrotem do oryginalnych bajtów w sekundę, używając narzędzia dokładnie takiego jak to.

Base64 to więc kiepska kryjówka dla haseł, kluczy API i wszelkich poufnych wartości. Jeśli ciąg znaków jedynie wygląda na zaszyfrowany, nie oznacza to, że jest chroniony. Szyfrowanie natomiast przekształca dane za pomocą tajnego klucza tak, że tylko osoba posiadająca ten klucz może je odczytać. Oba mechanizmy rozwiązują różne problemy: szyfrowanie chroni poufność, Base64 zapewnia kompatybilność. Często są używane razem — możesz zaszyfrować dane za pomocą AES, a następnie zakodować szyfrogram w Base64, by mógł przejść przez kanał tekstowy — ale jedno nigdy nie zastępuje drugiego.

Abstrakcyjny obraz rozpadający się w płynący strumień świecących znaków i ponownie się składający, indygo z cyjanem i złotem
Kodowanie i dekodowanie są w pełni odwracalne — i nie zapewniają żadnej tajności.

Kodowanie a dekodowanie

Oba kierunki to proste lustrzane odbicia. Kodowanie bierze oryginalny tekst lub dane binarne i tworzy ciąg Base64. Dekodowanie bierze ciąg Base64 i odtwarza dokładnie oryginalne bajty. Nasze narzędzie wykonuje obie operacje bezpośrednio w przeglądarce — nic, co wpiszesz lub wkleisz, nie jest nigdy wysyłane na serwer, więc operacja jest w pełni lokalna i prywatna. Możesz bezpiecznie zdekodować token podczas debugowania lub zakodować fragment do osadzenia, nie obawiając się, że dane opuszczą stronę.

W przypadku pokrewnych konwersji zapoznaj się z naszym narzędziem kodowania/dekodowania URL do kodowania procentowego lub z dekoderem JWT, gdy chcesz zbadać segmenty Base64 wewnątrz tokena. Znajdziesz je obok pozostałych narzędzi deweloperskich.

Najczęściej zadawane pytania

Czy Base64 to forma szyfrowania?

Nie. Base64 to kodowanie, a nie szyfrowanie. Nie używa żadnego klucza i jest w pełni odwracalne przez każdego, więc nie zapewnia żadnego bezpieczeństwa. Używaj prawdziwego szyfrowania, takiego jak AES lub RSA, by chronić poufne dane.

Dlaczego Base64 powiększa dane?

Base64 zamienia każde trzy bajty wejściowe w cztery znaki wyjściowe, co zwiększa rozmiar o około 33%. Jeśli wynik jest podzielony na wiersze o stałej długości, podziały wierszy dodają jeszcze kilka procent.

Jakich znaków używa Base64?

Standardowy alfabet to 26 wielkich liter, 26 małych liter, cyfry od 0 do 9 oraz symbole plus i ukośnik, a znak równości służy do uzupełniania na końcu.

Czy mogę bezpiecznie przechowywać hasła w Base64?

Nie. Base64 zmienia jedynie wygląd danych, a nie to, kto może je odczytać. Każdy może je natychmiast zdekodować. Hasła powinny być hashowane przy użyciu silnego algorytmu, a tajne dane powinny być szyfrowane.

Czy to narzędzie Base64 jest prywatne?

Tak. Kodowanie i dekodowanie odbywa się w całości w przeglądarce. Nic, co wprowadzisz, nie jest przesyłane ani wysyłane na żaden serwer, więc dane pozostają na Twoim urządzeniu.

Jaka jest różnica między kodowaniem a dekodowaniem?

Kodowanie przekształca oryginalny tekst lub dane binarne w ciąg Base64. Dekodowanie odwraca tę operację, zamieniając ciąg Base64 z powrotem w dokładnie oryginalne bajty. To operacje lustrzane.