Koder & dekoder Base64

Zakoduj tekst do Base64 albo zdekoduj Base64 z powrotem do czytelnego tekstu. Obsługuje cztery tryby formatu: Ciąg, JSON, XML i YAML. JSON/XML/YAML są automatycznie formatowane przy dekodowaniu. Ponadto: Konwerter obrazu Base64 | Plik do Base64 | Hex ↔ Base64.
Całe przetwarzanie odbywa się lokalnie w przeglądarce — Dane nigdy nie są wysyłane na żaden serwer.
Format: Kierunek:
Alfabet: Zawijanie wierszy:
What is Base64? Base64 is a binary-to-text encoding scheme that represents data using 64 ASCII characters (A-Z, a-z, 0-9, +, /). It is commonly used to transmit binary data over text-based protocols like HTTP, JSON, or XML.
String mode: Direct encode/decode of any text.
JSON/XML/YAML modes: When decoding, the result is validated, parsed, and pretty-printed for readability. When encoding, the input is validated before being Base64-encoded.
URL-safe: Replaces + with - and / with _, and strips trailing = padding — safe to use in URLs and filenames without percent-encoding.
Czym jest Base64?

Base64 zapisuje bajty za pomocą sześćdziesięciu czterech czytelnych znaków, aby dane przetrwały kanał zbudowany do tekstu: treść e-maila, ciąg JSON, atrybut XML, URL. Każde trzy bajty stają się czterema znakami, stąd nazwa — alfabet ma sześćdziesiąt cztery symbole, a każdy z nich niesie dokładnie sześć bitów.

To kodowanie transportowe, a nie zabezpieczenie i nie krok kompresji. Wynik jest mniej więcej o jedną trzecią większy od wejścia, a każdy, kto ma ciąg, może go od razu odwrócić. Gdy trzeba wiedzieć, czy dane zostały zmienione, służy do tego skrót (Generator skrótów); jeśli celem jest, by pozostały tajne, potrzebne jest szyfrowanie. Base64 nie robi żadnej z tych rzeczy.

Jedna liczba do zapamiętania: trzy bajty wejścia stają się czterema znakami wyjścia. Wszystko inne na tej stronie wynika z tego. Cztery znaki niosą dwadzieścia cztery bity, a dwadzieścia cztery bity to dokładnie trzy bajty, więc żadne dane nie giną ani nie powstają — z wyjątkiem końca, gdzie wejście może nie wypełnić ostatniej grupy po trzy.
Pięć alfabetów, których może używać ta strona

Pierwsze dwa wiersze to standardy, a ostatnie trzy to konwencje, które wyrosły wokół Uniksa. Wszystkie pięć niesie te same sześć bitów na znak i różni się jedynie tym, które sześćdziesiąt cztery znaki je niosą, więc te same bajty stają się pięcioma różnymi ciągami. Nic w ciągu nie mówi, który alfabet go wytworzył, dlatego selektor alfabetu domyślnie ustawia standardowy, a pole „bezpieczny dla URL” to skrót do drugiego wiersza.

Jak strona wybiera kandydata: selektor jest domyślny dla obu kierunków. Przy dekodowaniu panel po prawej odczytuje też sam ciąg — - i _ mogą pochodzić tylko z alfabetu bezpiecznego dla URL, + lub / tylko ze standardowego, a / lub . blisko początku wskazuje na dwa alfabety Unix. Tam wypisany jest każdy alfabet, który może odczytać bieżące wejście, wraz z powodem, dlaczego jest lub nie jest kandydatem.
Zawijanie wierszy: 76 i 64 znaki

MIME chciał Base64, który mieści się w e-mailu bez nadmiernie długich wierszy, i ustalił 76 znaków na wiersz rozdzielone CRLF. Pliki PEM, zawierające certyfikaty i klucze, używają 64. Podziały wierszy nie są częścią danych: dekoder usuwa je i łączy wiersze z powrotem przed czymkolwiek innym, więc ciąg zawinięty i niezawinięty dekodują się do dokładnie tych samych bajtów. Każdy wiersz oprócz ostatniego zawiera całkowitą liczbę czteroznakowych grup, co sprawia, że ich bezpieczne połączenie jest możliwe.

Ta strona zostawia wyjście w jednym wierszu, chyba że wybrano szerokość, a dekoder przyjmuje wejście z podziałami lub bez. Podziały, które zapisuje ta strona, to zwykłe znaki nowej linii, które mieści pole tekstowe; treści e-maili MIME tradycyjnie używają powrotu karetki przed każdym znakiem nowej linii, a każdy używany dekoder akceptuje oba.

Dopełnienie i dlaczego można je pominąć

Gdy wejście nie jest wielokrotnością trzech bajtów, ostatnia grupa czterech znaków jest niepełna i uzupełniają ją jeden lub dwa znaki =. Nie niosą one żadnych danych: tylko mówią, ile z czterech znaków jest prawdziwych. Dekoder może to wyliczyć z długości, dlatego Base64 bezpieczny dla URL tradycyjnie pomija dopełnienie — = jest niewygodne w URL lub nazwie pliku, a niektóre systemy kodują je procentowo.

Pole wyboru w wierszu opcji zachowuje dopełnienie, gdy wybrany jest alfabet bezpieczny dla URL. Nic innego się nie zmienia; znaki niosące dane są w obu przypadkach identyczne.

Częste nieporozumienia
  • "Base64 ukrywa dane." Nie. To podstawienie bez klucza, a cała idea polega na tym, że każdy czytelnik może je odwrócić. Zawinięcie hasła lub tokena w Base64 nie zmienia tego, kto je odczyta.
  • "Base64 kompresuje." Odwrotnie: każde trzy bajty wejścia stają się czterema znakami wyjścia, więc tekst jest o jedną trzecią większy niż niesione dane.
  • "Podziały wierszy są częścią wartości." To kwestia prezentacji. Dodanie lub usunięcie ich nigdy nie zmienia bajtów, które wracają.
  • "Bezpieczne dla URL oznacza inne kodowanie." To to samo kodowanie z dwoma zamienionymi znakami: + staje się -, a / staje się _, więc ciąg może siedzieć w ścieżce URL lub wartości zapytania bez escapowania.
  • "Ciąg, który się dekoduje, musi być poprawnym Base64." Każdy ciąg znaków alfabetu jest poprawnym Base64, bo każda kombinacja wartości sześciobitowych jest poprawnym ciągiem bajtów. Ciąg okazuje się błędny dopiero w następnym kroku, gdy te bajty zostaną sprawdzone względem formatu, który miały reprezentować.
  • "Dopełnienie mówi, którego alfabetu użyto." Nie mówi, a w większości przypadków nie mówią tego także znaki: standardowy i bezpieczny dla URL alfabet zgadzają się co do sześćdziesięciu dwóch z sześćdziesięciu czterech symboli, więc krótki ciąg często czyta się tak samo w obu.
Najczęstsze pytania

Dlaczego ciąg Base64 czasem kończy się jednym znakiem =, a czasem dwoma? Jeden oznacza, że ostatnia grupa niesie trzy prawdziwe znaki, czyli dwa bajty wejścia; dwa oznaczają, że niesie dwa, czyli jeden bajt wejścia. Brak = oznacza, że długość wejścia była wielokrotnością trzech.

Czy Base64 może reprezentować dowolne pliki binarne? Tak, i to jego główne zastosowanie. Ta strona traktuje wejście jako tekst UTF-8; dedykowane narzędzie Plik do Base64 czyta surowe bajty, gdy trzeba zakodować coś, co nie jest tekstem.

Którego alfabetu użyć w API? Tego, który udokumentował odbiorca. Jeśli podaje bezpieczny dla URL, użyj go; jeśli nic nie podaje, a wartość trafia do URL, bezpieczny dla URL z pominiętym dopełnieniem jest bezpiecznym wyborem.

Czy wyjście rozróżnia wielkość liter? Całkowicie. a i A to różne wartości, dlatego Base64 znacznie gorzej znosi pomylony znak niż Base32 czy Crockford Base32.