Jak używać
- Wpisz lub wklej tekst do zakodowania, ustaw „Wejście jako” na „Hex”, aby zakodować surowe bajty, albo kliknij „Otwórz plik”, aby zakodować plik.
- Pozostaw „Kodowanie tekstu” na UTF-8, chyba że system odbiorcy oczekuje innego zestawu znaków.
- Ustaw opcje: w większości przypadków pozostaw wariant „Standardowy”, wyłącz „Dopełnienie”, jeśli odbiorca go nie oczekuje, a w razie potrzeby ustaw „Zawijanie wierszy” na 76 (MIME) lub 64 (PEM) znaki.
- Skopiuj wynik w Base64 lub pobierz go jako plik.
Jak działa kodowanie Base64
Koder odczytuje dane wejściowe po trzy bajty. Te 24 bity są dzielone na cztery grupy po 6 bitów, a każda 6-bitowa wartość (od 0 do 63) wybiera jeden znak: A-Z dla wartości od 0 do 25, a-z dla 26–51, 0-9 dla 52–61, a następnie + i /. Na wejściu trzy bajty, na wyjściu cztery znaki – dlatego Base64 jest o około 33% większy od oryginalnych danych.
Tekst M a n
Bajty 77 97 110
Bity 01001101 01100001 01101110
6 bitów 010011 010110 000101 101110
Indeks 19 22 5 46
Base64 T W F u
Dopełnienie i długość wyniku
Gdy długość danych wejściowych nie jest wielokrotnością trzech, ostatnia grupa jest niepełna. Jeden pozostały bajt daje dwa znaki i ==, a dwa pozostałe bajty – trzy znaki i jeden =. Wynik z dopełnieniem ma więc zawsze długość 4 × ceil(n / 3) znaków dla n bajtów wejściowych.
Dopełnienie nie niesie żadnych danych. JSON Web Token, parametry URL i wiele interfejsów API je pomijają, dlatego jeśli strona odbierająca oczekuje wyniku bez dopełnienia, wyłącz opcję „Dopełnienie”. W przypadku linków i nazw plików wybierz wariant bezpieczny dla URL albo użyj strony Base64URL; oba rozwiązania zastępują + i / znakami - i _.
Zawijanie wierszy dla MIME i PEM
Domyślnie wynik jest jednym długim wierszem – właśnie tego wymagają JSON, data URI i nagłówki HTTP. Dwa formaty oczekują jednak podziału na wiersze:
- MIME, 76 znaków. Załączniki e-mail wysyłane z nagłówkiem
Content-Transfer-Encoding: base64nie mogą mieć wierszy dłuższych niż 76 znaków (RFC 2045). Ta opcja kończy wiersze znakami CRLF, zgodnie z wymaganiami MIME. - PEM, 64 znaki. Certyfikaty i klucze zapisane między wierszami
-----BEGINi-----ENDmają wiersze o długości 64 znaków (RFC 7468). Ta opcja kończy wiersze znakiem LF.
Zestawy znaków i pliki
Base64 koduje bajty, a nie litery, dlatego tekst jest najpierw zamieniany na bajty według wybranego zestawu znaków. Litera é zajmuje dwa bajty w UTF-8, ale tylko jeden w ISO-8859-1 lub Windows-1252, więc ten sam tekst daje różne wyniki w Base64. UTF-8 to właściwy wybór dla stron WWW, JSON i niemal każdego nowoczesnego API; GBK, Shift_JIS, Windows-1251 lub inny zestaw znaków warto wybrać tylko wtedy, gdy trzeba dopasować się do starszego systemu.
Pliki są kodowane dokładnie w takiej postaci, w jakiej zostały zapisane, bez konwersji zestawu znaków. Obrazy wraz z gotowymi fragmentami HTML i CSS można zakodować w narzędziu Obraz na Base64, a data URI z wykrytym typem MIME uzyskać w narzędziu Plik na Base64.
Specyfikacja
| Alfabet | A-Z a-z 0-9 + / |
|---|---|
| Rozmiar wyniku | 4 znaki na 3 bajty (ok. 133%) |
| Dopełnienie | = do wielokrotności 4 znaków |
| Standard | RFC 4648, sekcja 4 |
| Rozróżnia wielkość liter | Tak |
Przykłady
| Wejście (UTF-8) | Wyjście |
|---|---|
Hello, World! | SGVsbG8sIFdvcmxkIQ== |
Base64.is | QmFzZTY0Lmlz |
你好 | 5L2g5aW9 |
Najczęściej zadawane pytania
Dlaczego wynik Base64 różni się od wyniku z innego kodera?
echo; zamiast niego użyj printf '%s' lub echo -n), inny zestaw znaków, znaki końca wiersza w stylu Windows w tekście albo inne ustawienia dopełnienia, alfabetu lub zawijania wierszy. Te same bajty przy tych samych opcjach zawsze dają ten sam wynik.Jak zakodować tekst Unicode w Base64 w JavaScripcie?
btoa() przyjmuje tylko znaki do U+00FF i dla wszystkich pozostałych zgłasza błąd. Najpierw zamień ciąg na bajty UTF-8, np. btoa(String.fromCharCode(...new TextEncoder().encode(str))). W Node.js użyj Buffer.from(str, 'utf8').toString('base64').Jak zakodować dane w Base64 w wierszu poleceń?
printf '%s' 'your text' | base64. GNU base64 domyślnie zawija wynik co 76 znaków (dodaj -w 0, aby uzyskać jeden wiersz), a openssl base64 – co 64 znaki (dodaj -A).Czy kodowanie Base64 to forma szyfrowania?
O ile Base64 zwiększa rozmiar danych?
Każde 3 bajty zamieniają się w 4 znaki, z zaokrągleniem w górę do pełnej grupy, więc wynik jest o około 33% większy. Zawijanie wierszy MIME dodaje jeszcze dwa bajty (CRLF) na każde 76 znaków.