Formatuj, wcinaj i porządkuj JSON.
Kodowanie i dekodowanie Base64
Koduj tekst do Base64 i dekoduj go z powrotem.
Działa w przeglądarcePrzetwarzanie lokalne. Dane wejściowe nie opuszczają Twojego urządzenia.
Szczegóły
O tym narzędziu
Koduje tekst do Base64 i dekoduje go z powrotem, w alfabecie standardowym i w wariancie URL-safe. Dekodowanie przyjmuje oba warianty niezależnie od przełącznika, a przedrostek adresu data: jest usuwany za Ciebie.
Base64 istnieje, bo spora część internetu powstała z myślą o przenoszeniu tekstu i niczego więcej. Nagłówki poczty, pola tekstowe w JSON-ie, atrybuty XML, nagłówki HTTP i ciasteczka spodziewają się znaków drukowalnych, a surowe bajty przechodzące przez nie ulegają zniekształceniu - wystarczy przypadkowy znak nowej linii albo bajt powyżej 127 i wiadomość jest uszkodzona. Base64 rozwiązuje to, zapisując trzy bajty jako cztery znaki z 64-znakowego alfabetu, który przetrwa wszystko. Cena jest stała i znana: wynik jest o jedną trzecią większy od wejścia.
Wariant URL-safe podmienia dwa znaki, które sprawiają kłopot w adresie WWW. Standardowy Base64 używa + i /, a te w zapytaniu znaczą co innego, więc alfabet URL-safe stosuje zamiast nich - i _ oraz porzuca dopełnienie znakiem =, bo jego też trzeba by escapować. Tokeny JWT używają tego wariantu w całości i dlatego części tokenu dekodują się tutaj, a w ścisłym dekoderze standardowego alfabetu nie.
UTF-8 to miejsce, w którym naiwne implementacje się wykładają. Wbudowana w przeglądarkę funkcja btoa rzuca wyjątkiem na dowolnym znaku powyżej U+00FF, więc „café” się nie uda, a emoji jest niemożliwe; jedyna poprawna droga prowadzi przez zamianę tekstu na bajty UTF-8 i zakodowanie ich. To narzędzie robi tak zawsze i dlatego polski albo japoński napis wraca bez zmian. Wszystko liczy się w przeglądarce, a to ma znaczenie, bo w Base64 opakowuje się zwykle tokeny, poświadczenia i ładunki API.
Wypróbuj też
Powiązane narzędzia
- Działa w przeglądarceProgramistyczne
-
Podejrzyj nagłówek i dane tokenu JSON Web Token.
Działa w przeglądarceProgramistyczne -
Generuj kryptograficznie losowe identyfikatory UUID w wersji 4.
Działa w przeglądarceProgramistyczne
Warto wiedzieć
Najczęstsze pytania
- Czy Base64 jest szyfrowaniem?
- Nie, i traktowanie go jak szyfrowania to realny błąd bezpieczeństwa, a nie czepianie się słówek. Base64 to sposób kodowania: nie ma tu klucza, a odkodować może każdy jednym ruchem. Nic nie ukrywa. Jego zadaniem jest przeprowadzenie dowolnych bajtów przez kanał, który przyjmuje wyłącznie tekst - nie ich ochrona.
- Co oznacza Base64 URL-safe?
- To samo kodowanie z dwoma podmienionymi znakami i bez dopełnienia: - i _ zastępują + i /, a końcowe znaki = znikają. Oba podmienione znaki mają w adresie URL własne znaczenie, a = trzeba by zakodować procentowo, więc standardowy alfabet nie przeszedłby przez zapytanie bez escapowania. Tokeny JWT używają wariantu URL-safe wszędzie.
- Dlaczego mój tekst z ogonkami albo emoji gdzieś się popsuł?
- Bo koder pominął krok UTF-8. Funkcja btoa w JavaScripcie działa na napisie binarnym i rzuca wyjątkiem na wszystkim powyżej U+00FF, więc „café” po prostu się nie uda, a emoji nie da się w ogóle zapisać. Tekst musi najpierw stać się bajtami UTF-8. To narzędzie tak robi, więc cokolwiek wkleisz, wróci dokładnie takie samo.
- Dlaczego Base64 jest dłuższy od oryginału?
- Bo na każde trzy bajty przypadają cztery znaki, więc wynik jest większy o mniej więcej 33 procent, plus dopełnienie. Ten narzut jest powodem, dla którego osadzanie obrazów jako adresów data: obciąża stronę bardziej niż podlinkowanie tych samych plików, i dlatego Base64 jest opakowaniem transportowym, a nie kompresją.
- Czy mogę odkodować adres data:?
- Tak. Przedrostek data:image/png;base64, jest rozpoznawany i usuwany, więc możesz wkleić cały adres data ze stylów albo atrybutu HTML bez wcześniejszego przycinania. Białe znaki i łamania linii też są ignorowane - dzięki temu działa wklejanie z nagłówka wiadomości.