Tüm makaleler

Base64: kodlama neden gerekli ve nasıl çalışır

Base64, keyfi ikili verileri yalnızca harfler, rakamlar ve +, /, = karakterlerinden oluşan metin olarak temsil etmenin bir yoludur. Veriyi sıkıştırmaz veya şifrelemez — sonuç yaklaşık üçte bir daha büyük olur ve algoritmayı bilen herkes orijinal içeriği okuyabilir.

Kodlama nasıl çalışır

Giriş baytları üçerli gruplara (24 bit) ayrılır ve dört altı bitlik bloğa bölünür. Her blok, Base64 alfabesinden (A–Z, a–z, 0–9, +, /) bir karaktere karşılık gelir. Giriş verisinin uzunluğu üçün katı değilse, sona = dolgu karakteri eklenir.

Neden gerekli

E-posta (MIME), URL'ler, JSON, XML gibi birçok protokol ve format metin için tasarlanmıştır ve "ham" baytları — sıfır baytları, kontrol karakterlerini veya formatın kendi sözdizimiyle çakışan dizileri — güvenilir şekilde taşıyamaz. Base64, herhangi bir ikili veriyi güvenli metne dönüştürerek bu sorunu aşar.

Yaygın kullanım alanları

  • MIME üzerinden e-posta ekleri.
  • Bir JSON API içinde görsel veya küçük dosyalar göndermek.
  • İkili verileri bir veritabanının veya yapılandırma dosyasının metin alanlarında saklamak.
  • Bir JWT'nin header ve payload kısımlarını kodlamak.

Base64 NE DEĞİLDİR

Şifreleme ya da hashleme değildir. Herkes bir Base64 dizesini anahtar veya parola olmadan orijinal verilere geri çözebilir — bu yalnızca bir temsil biçimidir, bir güvenlik önlemi değil.

Standart ve URL-safe alfabeler

Klasik Base64 alfabesi, URL'lerde ve dosya adlarında özel bir anlamı olan + ve / karakterlerini kullanır. Bu tür durumlar için Base64URL varyantı vardır: burada + yerine -, / yerine de _ kullanılır. Standart kodlamanın sonucu ek bir percent-encoding olmadan bir URL'ye eklenirse, + ve / karakterleri adresi bozabilir veya yol ayırıcılarıyla çakışabilir.

Yaygın bir hata: kesilmiş veya "bozulmuş" dolgu

= karakteri satırın sonunda çöp değil, kodlamanın bir parçasıdır ve son bloktaki kaç baytın eksik olduğunu gösterir. Bir Base64 dizesi eksik kopyalanırsa veya dolgu karakterleri elle silinirse, çözücü bir hata döndürür veya sonuç eksik kalır. Bazı sistemler (örneğin JWT) ='yi bilerek atlar; bu durumda çözmeden önce uzunluğun yeniden tamamlanması gerekir.

Aracı dene