Robocikowo>ROBOCIKOWO
Dane

Base64

2006AktywnyOpublikowano: 29 września 2026Aktualizacja: 29 września 2026Opublikowany
Base64 to schemat kodowania binary-to-text reprezentujący dane binarne za pomocą 64 znaków ASCII (A–Z, a–z, 0–9, +, /) z '=' jako dopełnieniem.
Kluczowa innowacja
Ustandaryzowany, odwracalny sposób reprezentowania dowolnych danych binarnych jako tekstu ASCII, bezpiecznego do przesyłania kanałami przystosowanymi wyłącznie do tekstu.
Kategoria
Dane
Poziom abstrakcji
Primitive
Poziom operacji
DaneSystemTooling
Zastosowania
Osadzanie obrazów i plików w data URI (np. w HTML/CSS)Załączniki e-mail w standardzie MIMEKodowanie tokenów JWT (base64url)Przesyłanie obrazów do multimodalnych modeli AI przez APISerializacja danych binarnych w JSON i XMLObfuskacja promptów w atakach prompt-injection / jailbreak (AI security)Przemycanie i eksfiltracja danych w wejściach/wyjściach modeli

Jak działa

Base64 przetwarza wejście w grupach po 3 bajty (24 bity). Każda 24-bitowa grupa jest dzielona na cztery 6-bitowe fragmenty (sekstety), a każdy sekstet (wartość 0–63) jest indeksem do 64-znakowego alfabetu kodującego, dając 4 znaki wyjściowe. Gdy długość wejścia nie jest wielokrotnością 3, ostatnią, niepełną grupę uzupełnia się bitami zerowymi, a brakujące pozycje wyjściowe wypełnia się znakiem dopełnienia '=': 1 bajt wejścia daje 2 znaki + '==', a 2 bajty dają 3 znaki + '='. Dekodowanie odwraca ten proces. Wariant base64url stosuje ten sam mechanizm, ale z alfabetem, w którym '+' i '/' zastąpiono '-' i '_'.

Rozwiązany problem

Wiele protokołów i formatów (e-mail, JSON, XML, URL) było zaprojektowanych dla tekstu i nie przenosi bezpiecznie surowych bajtów binarnych — bajty spoza zakresu drukowalnego ASCII bywają zniekształcane, obcinane lub interpretowane jako znaki sterujące. Base64 rozwiązuje ten problem, mapując dowolne dane binarne na bezpieczny, drukowalny podzbiór ASCII, dzięki czemu można je przenieść przez kanał tekstowy i wiernie odtworzyć.

Komponenty

64-znakowy alfabet kodującyMapowanie 6-bitowych sekstetów na znaki wyjściowe

Tablica odwzorowująca wartości 0–63 na znaki drukowalne ASCII. W wariancie standardowym: A–Z (0–25), a–z (26–51), 0–9 (52–61), '+' (62), '/' (63).

Standard (base64)Znaki 62 i 63 to '+' i '/'. Domyślny wariant w MIME i większości zastosowań ogólnych.
URL-safe (base64url)Znaki 62 i 63 to '-' i '_', dzięki czemu wynik jest bezpieczny w URL-ach i nazwach plików. Używany m.in. w JWT.

Oficjalna

Grupowanie 24-bitowe (3 bajty → 4 znaki)Konwersja jednostek 8-bitowych na jednostki 6-bitowe

Podział strumienia wejściowego na 24-bitowe grupy i dalej na cztery 6-bitowe sekstety.

INTrzy bajty danych binarnych.
OUTCztery znaki z 64-znakowego alfabetu.
Dopełnienie (padding '=')Sygnalizacja liczby znaczących bajtów w ostatniej grupie

Mechanizm obsługi niepełnych grup na końcu wejścia: 1 bajt → 2 znaki + '==', 2 bajty → 3 znaki + '='. Zapewnia, że długość wyjścia jest wielokrotnością 4.

Oficjalna

Implementacja

Pułapki implementacyjne
Mylenie Base64 z szyfrowaniemKrytyczna

Base64 jest w pełni odwracalne bez klucza i nie zapewnia poufności. W kontekście AI ma to podwójne znaczenie: dane wrażliwe zakodowane w Base64 pozostają jawne, a filtry treści analizujące tylko czysty tekst mogą przeoczyć złośliwe instrukcje zakodowane w Base64 (prompt-injection/jailbreak).

Rozwiązanie:Traktuj Base64 wyłącznie jako transport, nie jako zabezpieczenie. Dekoduj i sanityzuj treści przed filtrowaniem oraz stosuj właściwe szyfrowanie dla poufności.
Mylenie standard vs base64urlWysoka

Użycie alfabetu standardowego ('+','/') tam, gdzie wymagany jest base64url ('-','_'), psuje URL-e, nazwy plików i tokeny JWT.

Rozwiązanie:Dobierz wariant do kontekstu i jawnie wybieraj funkcje url-safe przy pracy z URL-ami/JWT.
Nieodporne parsowanie paddingu i whitespaceŚrednia

Różne biblioteki różnie traktują brak '=' oraz białe znaki/łamanie wierszy, co prowadzi do błędów dekodowania między systemami.

Rozwiązanie:Normalizuj wejście (usuń whitespace, uzupełnij padding) lub używaj trybów tolerancyjnych zgodnie ze specyfikacją.
Ignorowanie ~33% narzutu rozmiaruŚrednia

Kodowanie zwiększa rozmiar o około 1/3, co przy dużych obrazach/plikach w promptach multimodalnych powiększa zużycie tokenów, pasma i kosztów.

Rozwiązanie:Uwzględnij narzut w limitach tokenów i rozmiaru; rozważ kompresję danych przed kodowaniem.

Ewolucja

Oryginalny paper · 2006 · IETF RFC 4648 · Simon Josefsson
RFC 4648: The Base16, Base32, and Base64 Data Encodings
Simon Josefsson
1993
Privacy-Enhanced Mail (RFC 1421)

Jedno z wczesnych ustandaryzowanych zastosowań kodowania Base64 do przenoszenia danych binarnych w poczcie.

1996
MIME standaryzuje Base64 (RFC 2045)
Punkt przełomowy

Base64 stał się jednym z Content-Transfer-Encoding w MIME, co upowszechniło je jako sposób kodowania załączników e-mail.

2003
RFC 3548 — pierwsza samodzielna specyfikacja

Pierwsza specyfikacja zbierająca Base16/Base32/Base64 w jednym dokumencie, niezależnym od MIME.

2006
RFC 4648 — obowiązujący standard
Punkt przełomowy

Zastąpił RFC 3548, ujednolicił rozbieżności implementacyjne i sformalizował wariant URL-safe (base64url).

2015
JWT (RFC 7519) upowszechnia base64url

JSON Web Token oparł kodowanie nagłówka, payloadu i podpisu na base64url, czyniąc ten wariant wszechobecnym w uwierzytelnianiu webowym i API.

Hiperparametry (konfigurowalne osie)

Wariant alfabetuWysoka

Standard ('+','/') vs URL-safe ('-','_').

standardMIME i zastosowania ogólne
base64urlURL-e, nazwy plików, JWT
Dopełnienie '='Średnia

Czy dołączać znaki dopełnienia '='. Niektóre profile (np. część zastosowań base64url) pomijają padding.

with paddingZgodne z domyślnym RFC 4648
no paddingCzęste w tokenach webowych
Łamanie wierszyNiska

Opcjonalne dzielenie wyjścia na wiersze (np. 76 znaków w MIME) dla zgodności z e-mailem.

no wrappingDomyślne w RFC 4648
76 chars/lineMIME (RFC 2045)

Złożoność obliczeniowa

Złożoność czasowa: O(n). Złożoność przestrzenna: O(n).

Równoległość

Poziom równoległości
W pełni równoległy

Każda 24-bitowa grupa (3 bajty) jest kodowana niezależnie od pozostałych, więc kodowanie/dekodowanie można trywialnie zrównoleglić na blokach.

Wymagania sprzętowe

Podstawowe

Base64 wymaga jedynie prostych operacji bitowych i indeksowania tablicy, dostępnych na dowolnym CPU; nie potrzebuje akceleratorów.