Base64 Nedir? Encode ve Decode İşlemi Nasıl Yapılır?
Base64 kodlaması ne işe yarar, nerede kullanılır? Web geliştirici ve API kullanıcıları için tam rehber.
Base64 Nedir? Temel Tanım
Base64, ikili (binary) verileri yalnızca ASCII metin karakterleriyle ifade edebilen bir kodlama (encoding) standardıdır. Adındaki "64" sayısı, bu sistemin kullandığı karakter sayısından gelir: A-Z (26 harf), a-z (26 harf), 0-9 (10 rakam), + ve / işaretleri — toplam 64 karakter.
Base64, bir veriyi şifrelemez; sadece dönüştürür. Yani Base64 ile kodlanmış bir metin, kolayca orijinal haline döndürülebilir. Bu nedenle güvenlik amacıyla değil, veri aktarım uyumluluğu için kullanılır.
Neden Base64'e İhtiyaç Duyuldu?
Bilgisayar sistemleri başlangıçta 7-bit ASCII karakterlerini desteklerken, ikili veriler (görseller, sesler, programlar) 8-bit veri içerir. Eski ağ protokolleri ve e-posta sistemleri, 8-bit binary veriyi doğrudan iletirken hatalara neden olabiliyordu. Base64, bu sorunu çözmek için geliştirildi: binary veriyi yalnızca güvenli ASCII karakterleriyle temsil ederek herhangi bir metin tabanlı sistem üzerinden aktarılabilir hale getirir.
Base64 Nasıl Çalışır? (Teknik Detay)
Base64, her 3 byte'lık (24 bit) binary veriyi 4 adet 6-bit'lik gruba böler ve her grubu 0-63 arasında bir sayıya karşılık gelen karakterle temsil eder.
Adım Adım Örnek
Metin: "Hi" (2 karakter)
- H = 01001000 (ASCII 72)
- i = 01101001 (ASCII 105)
- Padding için 0'lar eklenir: 00000000
- 24 bit: 010010000110100100000000
- 6'lı gruplar: 010010 | 000110 | 100100 | 000000
- Değerler: 18, 6, 36, 0
- Base64 karakterleri: S, G, k, A
- Sonuç: SGk= (= padding karakteridir)
Metin: "Merhaba" → Base64: TWVyaGFiYQ==
Base64'ün Kullanım Alanları
1. E-posta Ekleri (MIME Standardı)
E-posta protokolü (SMTP), orijinal olarak yalnızca metin iletmek için tasarlanmıştır. PDF, görsel veya Word dosyası gibi eklentiler, e-postalara Base64 ile kodlanarak eklenir. Mail istemciniz (Outlook, Gmail) bu dönüşümü otomatik yapar.
2. API'lerde Görsel ve Dosya Gönderme
JSON formatı binary veri içeremez. Bir API'ye görsel göndermek istediğinizde iki yol vardır:
- Multipart form-data (ayrı HTTP isteği)
- Base64 string olarak JSON body içinde göndermek
Örnek JSON içeriği:
"image": "data:image/png;base64,iVBORw0KGgoAAAANSUh..."
3. HTML'de Inline Görsel (Data URI)
Küçük görselleri ayrı HTTP isteği gerektirmeden HTML'e gömmek için kullanılır. Örneğin: data:image/svg+xml;base64,PHN2ZyB4bWxucy... şeklinde src attribute olarak verilebilir.
Bu yöntem, favicon ve küçük ikonlar için HTTP request sayısını azaltır.
4. JWT (JSON Web Token)
Modern web uygulamalarında kimlik doğrulama için kullanılan JWT tokenları, 3 kısımdan oluşur: Header, Payload ve Signature. İlk iki kısım Base64URL ile kodlanmıştır (Base64'ün URL-güvenli versiyonu).
Örnek JWT token yapısı: eyJhbGciOiJIUzI1NiJ9.eyJ1c2VyIjoiQWhtZXQifQ.xyz
İlk nokta öncesi kısım Base64URL ile decode edildiğinde: alg:HS256 çıkar
5. HTTP Basic Authentication
Temel HTTP kimlik doğrulamada kullanıcı adı ve şifre Base64 ile kodlanarak gönderilir. Örnek header: Authorization: Basic dXNlcjpzaWZyZQ== ("dXNlcjpzaWZyZQ==" user:sifre anlamına gelir)
6. CSS'te Arka Plan Görseli
background-image: url('data:image/png;base64,iVBORw0K...');
Base64 ve Base64URL Farkı
Standart Base64, + ve / karakterleri kullanır. Ancak bu karakterler URL'lerde sorun çıkarır. Bu nedenle URL'lerde kullanılan Base64URL standardı, + yerine -, / yerine _ kullanır ve = padding'i çıkarır.
Önemli Güvenlik Notu
Base64 şifreleme değildir! Şifreleme (encryption), verinin yetkisiz kişiler tarafından okunmasını engeller. Base64 ise sadece formati değiştirir — herkes tarafından kolayca decode edilebilir.
Hassas verileri (şifre, kredi kartı, kişisel bilgi) aktarmak için AES-256, RSA gibi gerçek şifreleme algoritmalarını kullanın. Base64 sadece format uyumluluğu içindir.
Base64 Encode / Decode Nasıl Yapılır?
Base64 Encode/Decode aracımızı kullanarak:
- Metin veya dosyanızı anında Base64'e çevirin
- Base64 kodunu orijinal metne decode edin
- Sonuçları tek tıkla kopyalayın
Araç tamamen tarayıcınızda çalışır, verileriniz sunucuya gönderilmez.
Sıkça Sorulan Sorular
Base64 ile şifrelenmiş bir veri güvenli midir?
Hayır. Base64 şifreleme değildir, sadece kodlamadır. "SGVsbG8=" metninin "Hello" olduğunu herkes bulabilir.
Base64 dosya boyutunu artırır mı?
Evet, yaklaşık %33 büyür. 1 MB'lık bir dosya Base64 ile yaklaşık 1.33 MB olur. Bu nedenle büyük dosyalar için ayrı upload yöntemleri tercih edilir.
JWT'yi decode edebilir miyim?
Evet, JWT'nin header ve payload kısmını Base64URL ile decode edebilirsiniz. Ancak Signature kısmını doğrulamak için sunucu tarafında secret key gerekir.