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.
- H = 0x48 = 01001000, i = 0x69 = 01101001, ! = 0x21 = 00100001
- sklejamy: 010010000110100100100001
- dzielimy na grupy sześciobitowe: 010010 | 000110 | 100100 | 100001
- jako liczby: 18, 6, 36, 33
- 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.