Base64 — kodowanie i dekodowanie
Zamień tekst lub plik na Base64 albo odkoduj Base64 z powrotem do czytelnego tekstu. Znaki Unicode są obsługiwane poprawnie, alfabet URL-safe włącza się jednym kliknięciem, a dekodowanie przyjmuje oba alfabety, z dopełnieniem lub bez niego.
Znaki: 0 · słowa: 0 · wiersze: 0
Znaki: 0 · słowa: 0 · wiersze: 0
Działa w całości w tej karcie przeglądarki. Twój tekst nie jest wysyłany ani zapisywany.
Alfabet Base64
Indeks → znak według RFC 4648. Dwa ostatnie wyróżnione znaki różnią się w wersji bezpiecznej dla URL: 62 to + lub -, 63 to / lub _.
- 0A
- 1B
- 2C
- 3D
- 4E
- 5F
- 6G
- 7H
- 8I
- 9J
- 10K
- 11L
- 12M
- 13N
- 14O
- 15P
- 16Q
- 17R
- 18S
- 19T
- 20U
- 21V
- 22W
- 23X
- 24Y
- 25Z
- 26a
- 27b
- 28c
- 29d
- 30e
- 31f
- 32g
- 33h
- 34i
- 35j
- 36k
- 37l
- 38m
- 39n
- 40o
- 41p
- 42q
- 43r
- 44s
- 45t
- 46u
- 47v
- 48w
- 49x
- 50y
- 51z
- 520
- 531
- 542
- 553
- 564
- 575
- 586
- 597
- 608
- 619
- 62+ -
- 63/ _
Jak długi jest wynik
Każde 3 bajty danych dają 4 znaki; ostatnia grupa 1 lub 2 bajtów jest dopełniana znakiem = w standardowym Base64 i pozostaje bez dopełnienia w wersji bezpiecznej dla URL.
| Dane wejściowe | Bajty | Standardowy | Bezpieczny dla URL | Długość |
|---|---|---|---|---|
U | 1 | VQ== | VQ | 4 |
Ul | 2 | VWw= | VWw | 4 |
Ult | 3 | VWx0 | VWx0 | 4 |
UltK | 4 | VWx0Sw== | VWx0Sw | 8 |
UltKi | 5 | VWx0S2k= | VWx0S2k | 8 |
UltKit | 6 | VWx0S2l0 | VWx0S2l0 | 8 |
Do czego służy Base64
Base64, zdefiniowany w RFC 4648, zapisuje dowolne bajty za pomocą 64 drukowalnych znaków ASCII: A–Z, a–z, 0–9, + i /. Każda grupa trzech bajtów (24 bity) jest dzielona na cztery liczby 6-bitowe, a każda z nich wskazuje jeden znak alfabetu. Gdy długość danych nie jest wielokrotnością trzech, ostatnia grupa jest dopełniana jednym lub dwoma znakami =. Wynik jest zawsze o około 33% większy od danych wejściowych: 4 znaki na każde 3 bajty.
Base64 istnieje, ponieważ wiele kanałów zaprojektowano z myślą o tekście. E-mail (MIME), adresy data: w HTML i CSS, pola JSON przenoszące obrazy lub certyfikaty oraz nagłówki uwierzytelniania HTTP Basic używają Base64 do bezpiecznego przesyłania danych binarnych. To nie jest szyfrowanie i niczego nie ukrywa; do dekodowania nie potrzeba klucza.
Unicode i wariant URL-safe
Base64 koduje bajty, a nie litery, więc tekst trzeba najpierw zamienić na bajty. To narzędzie zawsze używa UTF-8, czyli kodowania, na którym działa internet: „é” zajmuje dwa bajty, a emoji cztery. Wbudowana w przeglądarkę funkcja btoa sama zgłasza błąd przy każdym znaku powyżej U+00FF, dlatego proste kodery zawodzą przy polskich znakach i emoji; tutaj tekst przechodzi najpierw przez TextEncoder, a dekodowanie odwraca to za pomocą TextDecoder. Jeśli zdekodowane bajty nie są poprawnym UTF-8 (obraz, plik zip), narzędzie pokazuje je szesnastkowo zamiast nieczytelnego tekstu.
Standardowy Base64 używa znaków + i /, które mają znaczenie w adresach URL i nazwach plików. Alfabet bezpieczny dla URL z sekcji 5 RFC 4648 zastępuje je znakami - i _, a dopełnienie zwykle się pomija. Dokładnie ta postać jest używana w JSON Web Tokens. Dekoder akceptuje oba alfabety oraz brak dopełnienia, więc możesz wkleić dowolną wersję.
Kodowanie plików i obrazów
Wybierz plik, a narzędzie odczyta go lokalnie za pomocą FileReader i zwróci jego Base64 albo kompletny adres data: z typem MIME pliku, gotowy do wklejenia w znacznik img lub tło CSS. Obrazy wstawiane bezpośrednio oszczędzają jedno żądanie HTTP, ale rosną o jedną trzecią i nie mogą być osobno buforowane, więc nadają się do małych ikon, a nie do zdjęć. Do obrazów z podglądem i gotowymi fragmentami HTML i CSS użyj narzędzia Obraz do Base64.
Najczęściej zadawane pytania
- Dlaczego wynik w Base64 jest dłuższy niż dane wejściowe?
- Każde 3 bajty zamieniają się w 4 znaki, więc wynik ma około 4/3 rozmiaru danych wejściowych plus do dwóch znaków dopełnienia. Tekst spoza ASCII jest jeszcze dłuższy, bo UTF-8 używa od dwóch do czterech bajtów na znak.
- Co oznaczają znaki = na końcu?
- To dopełnienie. Dzięki niemu długość wyniku jest wielokrotnością czterech, gdy długość danych nie jest wielokrotnością trzech. Jeden znak = oznacza, że ostatnia grupa miała dwa bajty, dwa znaki = oznaczają, że miała jeden bajt.
- Dlaczego dekodowanie kończy się błędem nieprawidłowego znaku?
- Dane wejściowe zawierają coś spoza alfabetu, na przykład spację w środku wyrazu, cudzysłów albo znak % z kodowania URL. Podziały wierszy i brak dopełnienia są tolerowane; inne znaki nie.
- Czy kodowanie hasła w Base64 jest bezpieczne?
- Base64 nie zapewnia żadnej ochrony. Uwierzytelnianie HTTP Basic wysyła user:password w Base64, dlatego wolno go używać wyłącznie przez HTTPS. Do ochrony sekretów użyj prawdziwego szyfrowania lub haszowania.
- Czym różni się Base64 od Base64url?
- Tylko dwa znaki i dopełnienie: Base64url używa - i _ zamiast + i / oraz zwykle pomija =, dzięki czemu wynik może znaleźć się w adresach URL i nazwach plików bez znaków ucieczki.