Informatyka
Konwerter Base64: tekst, liczby, szesnastkowo i binarnie
Wpisz wartość w jednym z pięciu formatów i od razu otrzymasz wszystkie pozostałe: ciąg Base64, tekst, bajty szesnastkowo i binarnie oraz liczbę całkowitą, którą przedstawiają. Poniżej zobaczysz, jak powstają znaki, po sześć bitów naraz.
Czym jest Base64 i kiedy się go używa
Base64 to sposób zapisu dowolnych bajtów za pomocą tylko 64 bezpiecznych znaków: wielkich i małych liter, cyfr, plusa i ukośnika. Jest potrzebny, gdy dane binarne muszą przejść przez kanał przeznaczony dla tekstu: załączniki e-mail, obrazy osadzone na stronie jako data URI, klucze i certyfikaty w plikach PEM, tokeny JWT.
Mechanizm jest prosty: bierze się trzy bajty, czyli 24 bity, i dzieli je na cztery grupy po sześć. Sześć bitów to wartości od 0 do 63, a każdej wartości odpowiada jeden znak. Gdy na końcu zostaje jeden lub dwa bajty, uzupełnia się je zerami, a znak = pokazuje, ile znaków nie niesie danych. Dlatego ciąg Base64 jest zawsze mniej więcej o jedną trzecią dłuższy niż dane pierwotne.
Base64 to nie szyfrowanie: każdy może go odkodować bez klucza. Przekształca, nie chroni. Wariant URL-safe zamienia + i / na - i _, bo pierwsze dwa mają znaczenie w adresach internetowych, i często pomija dopełnienie.
Częste błędy
- Traktowanie Base64 jako sposobu na ukrycie hasła: to kodowanie, które każdy może odwrócić, i nie daje żadnego bezpieczeństwa.
- Dekodowanie jako tekstu danych, które tekstem nie są: obraz lub klucz w Base64 dają bajty, które nie tworzą poprawnego UTF-8, i to jest normalne.
- Mieszanie dwóch alfabetów: ciąg URL-safe z - i _ podany standardowemu dekoderowi zostaje odrzucony albo źle odczytany, jeśli dekoder pomija nieznane znaki.
Najczęstsze pytania
Dlaczego ciąg Base64 kończy się jednym lub dwoma znakami =?
Ponieważ dane nie były wielokrotnością trzech bajtów. Jeden pozostały bajt daje dwa znaki i dwa =, dwa bajty dają trzy znaki i jedno =. Dopełnienie mówi dekoderowi, ile bajtów odtworzyć; wiele dekoderów, w tym ten, akceptuje też jego brak.
O ile dłuższy staje się plik w Base64?
Każde trzy bajty stają się czterema znakami, czyli około 33% więcej, z zaokrągleniem w górę do wielokrotności czterech. Obraz o rozmiarze 30 kB staje się ciągiem o długości około 40 kB.
Co oznacza liczba całkowita big-endian?
Bajty są czytane jako jedna liczba, w której pierwszy bajt jest najbardziej znaczącą cyfrą w systemie o podstawie 256. Bajty 01 00 mają wartość 256. To ta sama kolejność, której używają protokoły sieciowe i duże liczby w kryptografii.
Dlaczego odkodowany tekst pokazuje dziwne znaki albo nie pojawia się wcale?
Bo bajty nie są tekstem UTF-8: mogą być obrazem, skompresowanym plikiem albo tekstem w innym kodowaniu, np. Latin-1 lub Windows-1250. Wtedy liczy się zapis szesnastkowy, który pokazuje bajty takimi, jakie są.
Jak działa to obliczenie
Każda grupa trzech bajtów b₁ b₂ b₃ tworzy liczbę N = b₁·65536 + b₂·256 + b₃. Cztery znaki to pozycje ⌊N / 262144⌋, ⌊N / 4096⌋ mod 64, ⌊N / 64⌋ mod 64 oraz N mod 64 w alfabecie ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/. Dekodowanie przebiega odwrotnie. Liczba całkowita to suma bajtów ważonych przez 256 podniesione do ich pozycji liczonej od prawej.
Powiązane kalkulatory
Konwerter systemów liczbowych
Binarny, ósemkowy, dziesiętny, szesnastkowy i uzupełnienie do dwóch.
Algebra Boole'a
Tabela prawdy wyrażenia logicznego z AND, OR, NOT i XOR.
Liczby zmiennoprzecinkowe IEEE 754
Jak liczba dziesiętna jest zapisywana jako float 32- lub 64-bitowy: znak, wykładnik, mantysa i błąd.
Kody Unicode i UTF-8
Punkt kodowy, bajty UTF-8 i UTF-16 oraz kod HTML każdego znaku, także emoji.