Koder Dekoder Base64 - Darmowe Internetowe Narzędzie Konwersji Base64
Darmowe narzędzie do kodowania i dekodowania base64. Natychmiastowa konwersja tekstu na Base64 lub dekodowanie ciągów Base64. Obsługa standardowego i URL-bezpiecznego kodowania. Bez konieczności logowania.
Koder/Dekoder Base64
Konwertuj tekst do i z kodowania Base64
Dokumentacja
Czym jest kodowanie Base64?
Base64 to sposób przekształcania dowolnych danych, w tym danych binarnych, takich jak obrazy, w zwykły tekst złożony wyłącznie z liter, cyfr i kilku symboli. Koder Base64 konwertuje dane do tej postaci tekstowej. Dekoder Base64 przekształca je z powrotem w oryginalne dane. Programy używają Base64 do bezpiecznego przesyłania danych binarnych przez systemy, takie jak poczta elektroniczna lub JSON, które oczekują zwykłego tekstu.
Base64 używa alfabetu złożonego z 64 znaków:
- Wielkie litery A–Z (26 znaków)
- Małe litery a–z (26 znaków)
- Cyfry 0–9 (10 znaków)
- Dwa symbole, zwykle
+i/(2 znaki)
Niektóre systemy używają także znaku równości (=) na końcu wyniku jako dopełnienia. Dopełnienie nie należy do alfabetu zawierającego 64 znaków; jedynie uzupełnia długość.
Dlaczego istnieje Base64
Wiele starszych protokołów tekstowych, w tym poczta elektroniczna (SMTP) i niektóre części HTTP, zaprojektowano do przesyłania 7-bitowego tekstu ASCII. Mogą one uszkadzać surowe bajty binarne, takie jak bajty znajdujące się w obrazie JPEG. Base64 omija ten problem, reprezentując każdy bajt wyłącznie za pomocą bezpiecznych, drukowalnych znaków. Dlatego załączniki poczty elektronicznej, obrazy osadzane na stronach internetowych i pola binarne w JSON są często najpierw kodowane za pomocą Base64.
Base64 nie jest kompresją ani szyfrowaniem. Zakodowany wynik jest zawsze większy od danych wejściowych, a każdy może go zdekodować bez hasła lub klucza.
Jak korzystać z tego narzędzia
- Wpisz tekst lub wklej go w polu wejściowym.
- Wybierz „Encode to Base64”, aby przekonwertować tekst na Base64, albo „Decode from Base64”, aby przekształcić ciąg Base64 z powrotem w tekst.
- Włącz konwersję na żywo, aby wynik aktualizował się automatycznie podczas pisania.
- Skopiuj wynik za pomocą przycisku kopiowania.
Narzędzie odczytuje i zapisuje standardowy tekst Unicode, więc poprawnie koduje i dekoduje litery diakrytyzowane, symbole oraz emoji, a nie tylko zwykłe litery angielskie.
Jak działa kodowanie Base64
Base64 przekształca każde 3 bajty danych wejściowych (24 bity) w 4 znaki wyjściowe (z których każdy zawiera 6 bitów), ponieważ 24 podzielone przez 6 równa się 4.
- Pobiera bajty wejściowe i zapisuje je w postaci binarnej.
- Grupuje bity w porcje po 24 bitów (3 bajty).
- Dzieli każdą porcję 24 bitów na cztery fragmenty po 6 bitów.
- Wyszukuje każdą liczbę 6-bitową (od 0 do 63) w alfabecie Base64 i zapisuje odpowiadający jej znak.
Jeśli długość danych wejściowych nie jest wielokrotnością 3, ostatnia porcja jest niepełna. Koder uzupełnia ją zerowymi bitami, a następnie dodaje do wyniku znaki =, aby nadal powstawały grupy po 4:
- Jeden pozostały bajt daje 2 znaki Base64 oraz
==. - Dwa pozostałe bajty dają 3 znaki Base64 oraz jeden znak
=.
Przykład kodowania Base64
Kodowanie słowa „Hello”:
- Wartości ASCII: 72, 101, 108, 108, 111
- Postać binarna:
01001000 01100101 01101100 01101100 01101111 - Pierwsze 3 bajty (24 bitów) dzieli się na cztery grupy po 6 bitów:
010010 000110 010101 101100, które odpowiadają liczbom 18, 6, 21, 44 → znakiS,G,V,s. - Pozostałe 2 bajty (16 bitów) dzieli się na trzy grupy po 6 bitów, dodając na końcu 2 bity zerowe:
011011 000110 111100, które odpowiadają liczbom 27, 6, 60 → znakib,G,8. - Ponieważ pozostały 2 bajty, na końcu dodaje się jeden znak
=. - Wynik:
SGVsbG8=
Dekodowanie odwraca te kroki: każdy znak jest mapowany z powrotem na odpowiadającą mu liczbę 6-bitową, bity są łączone w strumień, a następnie strumień odczytuje się ponownie jako bajty po 8 bitów.
Wzór na długość zakodowanego tekstu Base64
Dla danych wejściowych o długości n bajtów zakodowana długość w znakach wynosi:
encoded_length = 4 × ⌈n / 3⌉
gdzie ⌈x⌉ oznacza zaokrąglenie w górę do najbliższej liczby całkowitej. Wzór ten pokazuje, dlaczego wynik Base64 jest zawsze o około jedną trzecią większy od danych wejściowych: 4 znaków wyjściowych na każde 3 bajty wejściowe oznacza wzrost o 33%.
Zastosowania Base64
- Załączniki poczty elektronicznej (MIME). Pocztę elektroniczną zaprojektowano do obsługi tekstu, dlatego załączniki plików są przed wysłaniem konwertowane do Base64, co zwiększa ich rozmiar o około 33% w porównaniu z oryginałem.
- URI danych. Małe obrazy można osadzać bezpośrednio w kodzie HTML lub CSS jako tekst, na przykład
data:image/png;base64,iVBORw0KGgo..., unikając osobnego żądania pliku. Najlepiej sprawdza się to w przypadku małych plików, ponieważ duże powiększają stronę i nie mogą być osobno buforowane. - API i JSON. JSON nie ma natywnego sposobu przechowywania surowych danych binarnych, dlatego pliki binarne przesyłane za pośrednictwem API JSON są często najpierw kodowane za pomocą Base64.
- Uwierzytelnianie HTTP Basic. Nagłówek
Authorizationkoduje nazwę użytkownika i hasło w Base64, na przykładAuthorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ=. Samo w sobie nie zapewnia to bezpieczeństwa; dane uwierzytelniające może odczytać każdy, kto je przechwyci, dlatego uwierzytelniania Basic należy używać wyłącznie przez HTTPS. - JSON Web Tokens (JWT). Każda z trzech części tokenu JWT jest kodowana za pomocą Base64URL, czyli wariantu bezpiecznego do umieszczania w adresie URL.
- Przechowywanie danych binarnych jako tekstu. Bazy danych lub pliki konfiguracyjne, które przyjmują wyłącznie tekst, czasami przechowują dane binarne jako ciąg Base64.
Base64 w porównaniu z innymi kodowaniami
Base64 bezpieczne dla adresów URL zastępuje standardowe znaki + i / znakami - i _, ponieważ + i / mają specjalne znaczenie w adresie URL. Używa się go w tokenach JWT, parametrach zapytań URL i nazwach plików. To narzędzie generuje standardowy wynik Base64; konwersja do postaci bezpiecznej dla adresów URL wymaga jedynie zamiany tych dwóch znaków.
Base32 używa alfabetu zawierającego 32 znaków, więc każdy znak przenosi 5 bitów zamiast 6. Konwertuje każde 5 bajtów na 8 znaków, co oznacza narzut 60% (8 ÷ 5 = 1,6), w porównaniu z 33% w przypadku Base64. Base32 wybiera się, gdy wynik trzeba wpisać ręcznie lub odczytać przez telefon, ponieważ unika liter o różnej wielkości oraz znaków, które łatwo pomylić.
Szesnastkowy system zapisu używa 16 znaków (0–9, A–F) i wymaga 2 znaków na bajt, podwajając rozmiar (narzut 100%). Jest często używany do wyświetlania skrótów, kolorów i adresów MAC, gdy czytelność ma większe znaczenie niż niewielki rozmiar.
Kiedy nie używać Base64
Base64 zwiększa rozmiar i zużycie procesora, dlatego słabo nadaje się do dużych plików przesyłanych przez sieć; bezpośrednie przesyłanie surowych danych binarnych jest mniejsze i szybsze. Nie należy na nim polegać przy ukrywaniu poufnych informacji, takich jak hasła lub klucze API, ponieważ do jego zdekodowania nie jest potrzebna żadna tajemnica. Do przechowywania dużych plików zwykle lepszy jest binarny typ kolumny w bazie danych lub usługa przechowywania plików niż długi ciąg Base64 w polu tekstowym.
Częste błędy
- Pominięcie konwersji do UTF-8. Kodowanie tekstu zawierającego litery diakrytyzowane lub emoji bez wcześniejszej konwersji do bajtów UTF-8 może uszkodzić wynik.
- Usunięcie dopełnienia. Niektóre systemy usuwają końcowe znaki
=. Większość dekoderów nadal działa, jeśli długość ciągu zostanie uzupełniona do wielokrotności 4, ale nie wszystkie je akceptują, dlatego bezpieczniej jest zachować dopełnienie. - Pozostawione znaki końca wiersza. Starsze kodery oparte na MIME wstawiają znak końca wiersza co 76 znaków; większość współczesnych dekoderów oczekuje jednego ciągłego ciągu bez tych znaków.
- Mylenie wariantów. Standardowy Base64 i Base64 bezpieczne dla adresów URL używają różnych znaków w tych samych dwóch pozycjach alfabetu; dekodowanie przy użyciu niewłaściwego wariantu daje bezsensowny wynik lub błąd.
Najczęściej zadawane pytania
Czy Base64 jest formą szyfrowania? Nie. Jest odwracalnym kodowaniem tekstu, a nie szyfrowaniem. Każdy może natychmiast zdekodować ciąg Base64 bez hasła. Jeśli dane mają pozostać tajne, należy użyć algorytmu szyfrowania, takiego jak AES.
Dlaczego Base64 powiększa dane? Ponieważ przeznacza jeden pełny znak na przeniesienie zaledwie 6 bitów, podczas gdy surowy bajt zawiera 8 bitów. Konwersja 3 bajtów (24 bitów) na 4 znaków oznacza, że wynik jest 4/3 razy większy od danych wejściowych, czyli o około 33%.
Czy Base64 może kodować obrazy i inne pliki binarne? Tak. Każdy plik binarny, w tym obrazy, pliki PDF i nagrania dźwiękowe, można zakodować za pomocą Base64, a następnie zdekodować bajt po bajcie. Jest to często używane w przypadku małych obrazów osadzanych w HTML lub CSS, ale słabo nadaje się do dużych plików.
Jaka jest różnica między Base64 a Base64URL?
Base64URL zamienia standardowe znaki + i / na - i _, dzięki czemu wynik można umieszczać w adresie URL lub nazwie pliku bez dodatkowego kodowania. Tokeny JWT używają Base64URL właśnie z tego powodu.
Dlaczego podczas dekodowania mój ciąg Base64 powoduje błąd „invalid”?
Najczęstszymi przyczynami są znaki, które nie należą do alfabetu Base64, takie jak - i _ używane w wariancie bezpiecznym dla adresów URL, albo ciąg, którego długość jest o jeden większa od wielokrotności 4. Żaden prawidłowy ciąg Base64 nie ma takiej długości. Dekodowanie nie powiedzie się również, gdy zdekodowane bajty nie tworzą prawidłowego tekstu UTF-8. To narzędzie ignoruje spacje i znaki końca wiersza wewnątrz ciągu, a także dekoduje ciąg, z którego usunięto końcowe dopełnienie =.
Skąd pochodzi Base64? Technika ta wywodzi się z wczesnych sposobów przesyłania danych binarnych przez systemy pocztowe obsługujące wyłącznie tekst w latach 1980, a następnie została formalnie ustandaryzowana jako część MIME w dokumencie RFC 2045 w 1996 roku. Aktualną specyfikacją referencyjną dla Base64, Base32 i Base16 jest RFC 4648.