Kodowanie i dekodowanie Base64
Koduj i dekoduj Base64, bezpiecznie dla UTF-8, także w wariancie dla URL.
O tym narzędziu
Zamieniaj tekst na Base64 i z powrotem. Poprawnie obsługuje dowolny tekst Unicode i alfabet bezpieczny dla URL (base64url) używany w JWT i URL-ach.
Jak z tego korzystać
- Wybierz Koduj, aby zamienić tekst na Base64, lub Dekoduj, aby zamienić Base64 z powrotem na tekst.
- Wklej dane wejściowe. Tekst Unicode, np. ze znakami diakrytycznymi lub emoji, jest obsługiwany poprawnie.
- Dla tokenów i URL-i włącz Bezpieczne dla URL, aby używać - i _ zamiast + i /.
- Skopiuj wynik albo kliknij Zamień, aby odwrócić operację.
Pytania
- Czy Base64 to szyfrowanie?
- Nie. Base64 to kodowanie, które każdy może natychmiast odwrócić. Nigdy nie używaj go do ukrywania haseł ani sekretów.
- Czym różni się Base64 od Base64url?
- Base64url zastępuje + znakiem -, a / znakiem _ i zwykle pomija dopełnienie =, dzięki czemu wynik można stosować w URL-ach i nazwach plików. JWT używają Base64url.
- Dlaczego dekodowanie się nie udaje?
- Albo dane wejściowe zawierają znaki spoza alfabetu Base64, albo dekodują się do danych binarnych zamiast tekstu UTF-8, np. obrazu lub skompresowanego pliku.
- Dlaczego zakodowany tekst jest dłuższy?
- Base64 zapisuje każde 3 bajty za pomocą 4 znaków, więc wynik jest o około 33% większy niż dane wejściowe.
- Co oznacza = na końcu Base64?
- To dopełnienie (padding). Wynik Base64 ma zawsze długość będącą wielokrotnością czterech znaków, więc jedno = oznacza, że ostatnia grupa zawierała dwa bajty, a == – że jeden. Dopełnienie nie niesie danych, dlatego base64url zwykle je pomija. To narzędzie przed dekodowaniem dodaje brakujące dopełnienie.
- Jak zakodować Base64 w wierszu poleceń?
- W Linuksie i macOS uruchom printf hello | base64, aby dostać aGVsbG8=. Unikaj zwykłego echo, które dodaje znak nowej linii i daje zamiast tego aGVsbG8K. Do dekodowania użyj base64 -d albo base64 -D w starszych wersjach macOS. W PowerShellu użyj [Convert]::ToBase64String z bajtami swojego tekstu.
- Jak zdekodować obraz lub PDF zapisany w Base64?
- To narzędzie dekoduje do tekstu UTF-8, więc dane binarne, takie jak PNG czy PDF, dają błąd zamiast pliku. Zapisz ciąg Base64 do pliku i uruchom w terminalu base64 -d input.txt > image.png. Najpierw usuń ewentualny prefiks data:image/png;base64, bo nie jest on częścią zakodowanych danych.
Co to jest kodowanie Base64 i jak działa?
Base64 reprezentuje dane binarne za pomocą 64 drukowalnych znaków ASCII: A–Z, a–z, 0–9, + i /. Standardowy alfabet definiuje RFC 4648. Koder czyta dane wejściowe po trzy bajty, dzieli te 24 bity na cztery grupy po 6 bitów i każdej grupie przypisuje jeden znak. W ten sposób trzy bajty „Man” stają się „TWFu”. Gdy długość danych nie jest wielokrotnością trzech, ostatnią grupę uzupełnia dopełnienie =.
Base64 istnieje, bo wiele kanałów zbudowano dla tekstu, a nie dla surowych bajtów. Opierają się na nim załączniki e-mail (MIME), adresy data: w HTML i CSS, nagłówki HTTP Basic authentication, certyfikaty PEM i pola JSON przenoszące obrazy. To kodowanie transportowe, a nie kompresja ani zabezpieczenie. Dekodowanie jest natychmiastowe i nie wymaga klucza, więc wszystko, co zakodujesz w Base64, traktuj jak zwykły tekst, który każdy może przeczytać.
Jak zdekodować Base64 do tekstu i dlaczego UTF-8 ma znaczenie?
Aby zdekodować Base64 online, wybierz Dekoduj i wklej ciąg. Spacje i znaki nowej linii są najpierw usuwane, więc zawinięty tekst z pliku PEM lub e-maila dekoduje się bez problemu. Brakujące dopełnienie = jest dodawane automatycznie, a znaki - i _ z wariantu bezpiecznego dla URL też są akceptowane, więc nie musisz wiedzieć, który wariant masz. Zdekodowane bajty są potem odczytywane jako tekst UTF-8.
UTF-8 ma znaczenie, bo Base64 koduje bajty, a nie znaki. Wbudowana w przeglądarkę funkcja btoa() akceptuje tylko Latin-1, więc wywołana na tekście z ✓ albo emoji rzuca InvalidCharacterError. To narzędzie najpierw zamienia tekst na bajty UTF-8, dzięki czemu znaki diakrytyczne i emoji poprawnie przechodzą w obie strony: „é” staje się dwoma bajtami C3 A9 i koduje się jako „w6k=”. Jeśli zdekodowane bajty nie są poprawnym UTF-8, np. gdy to obraz albo plik gzip, zamiast krzaczków dostaniesz błąd.
Base64, hex czy kodowanie URL: czego użyć?
Base64, hex i kodowanie procentowe zamieniają dane w bezpieczny tekst, ale nadają się do różnych zadań. Hex używa dwóch znaków na bajt, więc wynik jest dwa razy większy, za to łatwo go czytać i jest standardem dla hashy i sum kontrolnych. Base64 używa czterech znaków na każde trzy bajty, czyli ok. 33% narzutu, co czyni go lepszym wyborem dla większych danych binarnych, takich jak obrazy, klucze czy zawartość plików w JSON.
Kodowanie procentowe, używane w URL-ach, jest przeznaczone dla tekstu z kilkoma zarezerwowanymi znakami, a nie dla danych binarnych. Jeśli wartość Base64 musi trafić do URL-a, query stringa albo nazwy pliku, użyj alfabetu base64url zamiast kodować procentowo + i /. Włącz tu przy kodowaniu Bezpieczne dla URL: - i _ zastępują + i /, a dopełnienie = jest pomijane – dokładnie w tym formacie są JWT. Do samego kodowania procentowego użyj narzędzia Kodowanie, dekodowanie i analiza URL.
Coś nie działa albo wynik wygląda na błędny? Zgłoś problem z tym narzędziem