Skip to main content

Base64

Koduj lub dekoduj Base64.

Wszystkie obliczenia wykonywane są lokalnie w przeglądarce. Dane nie są wysyłane na serwer.

Wyniki mają charakter informacyjny. Potwierdź je w innych źródłach.

Jak działa Base64

Base64 zapisuje dowolne dane binarne za pomocą 64 drukowalnych znaków, dzięki czemu mogą przejść przez kanały przyjmujące wyłącznie tekst — treść e-maila, łańcuch w JSON-ie, adres data:, nagłówek HTTP. To format transportowy, a nie zabezpieczenie.

Jak to działa

  • Bierze wejście po trzy bajty (24 bity) i dzieli te 24 bity na cztery grupy po sześć.
  • Każda 6-bitowa grupa to liczba od 0 do 63, używana jako indeks w alfabecie A–Z, a–z, 0–9, + oraz /.
  • Gdy długość wejścia nie jest wielokrotnością trzech, wynik uzupełnia się jednym lub dwoma znakami =, tak aby zawsze był wielokrotnością czterech.
  • Wariant URL-safe zamienia + i / na - oraz _, ponieważ + i / mają własne znaczenie wewnątrz adresu URL.
3 bajty (24 bity) → 4 grupy po 6 bitów → 4 znaki alfabetu
długość wyniku = 4 × ceil(długość wejścia / 3)

Przykład z liczbami

Kodowanie trzyznakowego napisu Hi! — dokładnie jedna pełna grupa, więc dopełnienie nie jest potrzebne.

  1. H = 0x48 = 01001000, i = 0x69 = 01101001, ! = 0x21 = 00100001
  2. sklejamy: 010010000110100100100001
  3. dzielimy na grupy sześciobitowe: 010010 | 000110 | 100100 | 100001
  4. jako liczby: 18, 6, 36, 33
  5. odczytujemy z alfabetu: 18→S, 6→G, 36→k, 33→h

Hi! koduje się jako SGkh. Cztery znaki wyjścia na trzy bajty wejścia — stały stosunek 4:3, przez który Base64 jest około 33% większy od danych, które przenosi.

Jak czytać wynik

  • Base64 to nie szyfrowanie i nie daje żadnej ochrony. Każdy odkoduje to natychmiast — ta strona właśnie to robi. Nigdy nie ukrywaj w ten sposób sekretów.
  • Licz się z około 33% przyrostem plus dopełnienie. Plik 10 MB po zakodowaniu ma około 13,3 MB — dlatego wklejanie dużych obrazów jako adresów data: rozdyma stronę.
  • Znaki = nie niosą danych. Część parserów ich wymaga, część odrzuca; JWT usuwa je całkowicie.
  • Kodowanie działa na bajtach, nie na znakach. Tekst trzeba najpierw zamienić na bajty, a ten enkoder używa UTF-8 — ten sam napis w innym kodowaniu znaków da inny wynik.

Częste pytania

Czy Base64 to rodzaj szyfrowania?
Nie. Szyfrowanie wymaga klucza i ma opierać się atakującemu; Base64 nie wymaga niczego i odwraca się w mikrosekundy. Jeśli znalazłeś ciąg Base64 w pliku konfiguracyjnym, traktuj jego zawartość jako w pełni jawną.
Dlaczego niektóre ciągi Base64 kończą się na = albo ==?
Bo wejście nie było wielokrotnością trzech bajtów. Jeden bajt reszty daje dwa znaki dopełnienia, dwa bajty reszty — jeden. Dopełnienie przywraca długość będącą wielokrotnością czterech.
Czym jest base64url i kiedy go potrzebuję?
To to samo kodowanie, w którym - i _ zastępują + oraz /, dzięki czemu wynik jest bezpieczny w ścieżce lub parametrach URL bez dodatkowego escapowania. Używają go JWT, parametry OAuth i wiele API.