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ć

  1. Wybierz Koduj, aby zamienić tekst na Base64, lub Dekoduj, aby zamienić Base64 z powrotem na tekst.
  2. Wklej dane wejściowe. Tekst Unicode, np. ze znakami diakrytycznymi lub emoji, jest obsługiwany poprawnie.
  3. Dla tokenów i URL-i włącz Bezpieczne dla URL, aby używać - i _ zamiast + i /.
  4. 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