Base64 kodlama nedir ve ne zaman kullanılır?
Base64'ün pratik bir açıklaması - gerçekten ne yaptığı, neden var olduğu ve buna ihtiyaç duyacağınız gerçek durumlar.
Base64, öğrenene kadar gizemli görünen, öğrendikten sonra her yerde görmeye başladığınız araçlardan biri. Web sitelerine gömülü görsellerin URL’lerinde, API çağrılarınızı kimlik doğrulayan belirteçlerde, her e-postanın eklerinde, restoranlarda taradığınız QR kodlarında bulunuyor.
Yaygın kullanımına rağmen çoğunlukla yanlış anlaşılıyor. İnsanlar şifreleme olduğunu sanıyor (değil). Veriyi küçülttüğünü sanıyor (büyütüyor). Sıkıştırma formatı olduğunu sanıyor (tam tersi). Bu yazı Base64’ün ne olduğunu, çözdüğü sorunu ve ne zaman başvurmanız gerektiğini netleştirir.
Tek cümlelik tanım
Base64, ikili veriyi güvenli, yazdırılabilir metin karakterlerinden oluşan bir dize olarak temsil etmenin yolu.
Hepsi bu. Hiçbir şeyi sıkıştırmaz, şifrelemez, gizlemez veya güvenli hale getirmez. Sadece kırılgan bir formattan (ikili baytlar) sağlam bir formata (ASCII metin) dönüştürür.
Base64’ün çözdüğü sorun
Bilgisayarlar her şeyi ikili depolar — bit dizileri, bayt halinde gruplar. Bir bayt 0’dan 255’e kadar herhangi bir değer olabilir. O değerlerin çoğu yazdırılabilir karakterlere karşılık gelmez; birçoğunun çeşitli sistemler için özel anlamı var:
- Bayt 0, C’de dizeleri sonlandıran “null” karakter
- Bayt 10 satır sonu
- Bayt 13 satır başı
- Baytlar 128-255 ASCII değil — farklı kodlamalar tarafından farklı yorumlanıyor
Ham ikili veriyi metin bekleyen bir sistem üzerinden göndermeye çalışırsanız — e-posta gövdesi, JSON dizesi, URL, XML özniteliği, SQL satırı — bir şeyler bozulur. 13 baytlık değer satır sonu olarak yorumlanır, 0 bayt dizenizi keser, 127 üzerindeki bayt beklenmedik karaktere dönüşür.
Base64 bunu yalnızca 64 “güvenli” karakter kullanarak çözer: büyük harf A-Z, küçük harf a-z, 0-9 basamakları ve + ve / sembolleri (artı dolgu için =). Her bayt kombinasyonu yalnızca bu karakterler kullanılarak kodlanabilir. Çıktı, herhangi bir metin tabanlı sistemden dokunulmadan geçer.
Nasıl çalışır (kısaca)
Base64, ikili veriyi bir seferde 3 bayt alır ve her 3 baytlık parçayı 4 Base64 karakterine dönüştürür. Her karakter 6 bit veri temsil eder (2⁶ = 64).
3 bayt (24 bit) → 4 base64 karakteri (24 bit)
- 24 giriş biti dört 6-bitlik gruba bölünür
- Her grup alfabeyi kullanarak bir Base64 karakterine eşlenir
Girdi 3’e bölünemezse, son parça = karakterleriyle doldurulur.
Bu nedenle Base64, veriyi tam olarak %33 büyütür. 1000 baytlık dosya Base64’te ~1334 bayt olur.
Base64 ile pratikte nerede karşılaşırsınız
E-posta ekleri
E-posta orijinal olarak yalnızca 7-bitlik ASCII metni taşımak için tasarlandı. Bir e-postaya fotoğraf eklediğinizde, e-posta sistemi o fotoğrafı eski sunuculardan yolculuğundan sağ çıkabilmesi için Base64’e kodlar. Bunu asla görmezsiniz — ama arka planda, gönderdiğiniz her görüntü, PDF ve ZIP Base64 kodlanmış.
HTML/CSS’de data URI’ler
Data URI, dosyayı doğrudan HTML veya CSS belgesine Base64 dizesi olarak gömer:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAA..." />
.icon {
background: url('data:image/svg+xml;base64,PHN2Zy...');
}
Tarayıcı Base64’ü çözer, görüntüyü sanki bir dosyadan yüklenmiş gibi işler. Küçük varlıklar için bir HTTP gidiş-dönüşü tasarrufu sağlar.
İkili yüklü JSON
JSON yalnızca metin — bir JSON dizesine ham ikili baytlar koyamazsınız. Bu yüzden bir API’nin ikili veri (görüntü, sertifika, imza) eklemesi gerektiğinde, önce Base64’e kodlar:
{
"filename": "avatar.png",
"content": "iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAAC..."
}
API tüketicisi Base64’ü bayta geri çözer. Dosya yüklemeleri için REST API’lerde, webhook’larda, görüntüleri veya sertifikaları işleyen servislerde yaygın.
Kimlik doğrulama belirteçleri
JWT’ler (JSON Web Tokens), OAuth taşıyıcı belirteçleri ve çeşitli API anahtarları Base64 kodlanmış. Harf, rakam ve + / / / = kombinasyonundan tanırsınız.
Örnek JWT:
eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIn0.SflKxwRJS...
Noktalar arasındaki her segment ayrı ayrı Base64 kodlanmış. İlk segment {"alg":"HS256","typ":"JWT"} olarak çözülür.
URL’ler
“URL-güvenli Base64” adlı varyant, + ve / karakterlerini (URL’lerde özel anlamları var) - ve _ ile değiştirir. Böylece Base64 verisi kodlama olmadan URL’lere gömülebilir — kısa URL’ler, belirteç paylaşımı ve kompakt kimlikler için yaygın.
Metin protokolleri üzerinden ikili dosya aktarımı
İkili dosyayı yalnızca metin ortamı üzerinden aktarmanız gerektiğinde — sohbete veya sorun takipçisine yapıştırmak gibi — Base64 standart yol. Karşı taraf çözer, orijinal dosyayı alır.
Base64’ün NE OLMADIĞI
En yanlış anlaşılan kısım bu.
Şifreleme değil. Base64 herhangi biri tarafından, anında, anahtarsız olarak tersine çevrilebilir. Kamuya açık bir kodlama şeması. Hassas veriyi Base64 ile “şifrelerseniz”, dizeyi kesen herkes milisaniyeler içinde çözebilir. Base64 kodlama, şifreleme değil. Aradaki fark hayati.
Sıkıştırma değil. Base64 veri boyutunu %33 artırır. Boyut önemliyse, tipik olarak önce sıkıştırırsınız (gzip, brotli), sonra Base64 yaparsınız — Base64 ek yükü zaten sıkıştırılmış boyuta uygulanır.
Gizleme de değil. Base64 kodlanmış şifre, önemsiz ek adımla düz metin şifre. “Koruma katmanı” olarak Base64’e dayanan güvenlik mekanizması tasarım gereği bozuk.
Base64 ne zaman kullanılır
Şu durumlarda Base64:
- İkili veriyi yalnızca metin kanalı üzerinden (JSON, e-posta, URL, XML) iletmek veya depolamak
- HTML veya CSS’e küçük dosyalar gömmek (data URI’leri)
- JWT, OAuth, sertifikalar gibi Base64 kodlanmış girdi gerektiren sistemlerle çalışmak
- Kopyala-yapıştır yoluyla ikili veri paylaşmak
Şu durumlarda kullanmayın:
- Veriyi korumak istediğinizde — şifreleme kullanın
- Bayt tasarrufu etmek istediğinizde — sıkıştırma kullanın
- İkili-güvenli kanal mevcutsa — baytları doğrudan gönderin
- Paylaşılan dosya sistemi veya nesne depolaması yeterliyse
Pratikte kodlama ve kod çözme
Base64 aracımız her ikisini halleder. Metin veya dosya için kodlama, Base64 dizesi için kod çözme — her şey tarayıcınızda. Veri cihazınızdan asla ayrılmaz. Belirteçler, anahtarlar veya hassas belgelerle çalışırken bu önemli.
Hızlı referans
| İhtiyaç | Çözüm |
|---|---|
| Bir görseli ayrı istek olmadan HTML’e gömmek | Base64 kodlanmış data URI |
| JSON API’de ikili dosya göndermek | Dosyayı Base64 kodlayın, JSON alanına koyun |
| JWT’yi çözümlemek | Her segmenti Base64 çözün |
| Sohbet üzerinden küçük ikili dosya paylaşmak | Base64 kodlayın, yapıştırın |
| Veriyi gizlemek | Şifreleme — Base64 değil |
| Dosyaları küçültmek | Sıkıştırma — Base64 değil |
Base64 bir kasa değil, çevirmen. İkili veriyi metne dönüştürür, metin sistemleri üzerinden seyahat edebilsin diye — daha fazlası değil. Bunu anladıktan sonra onu her yerde görürsünüz ve ne zaman kullanacağınızı tam olarak bilirsiniz. Base64 aracımızda kodlama-çözme işlemi dosya başına yaklaşık 10 saniye, her şey yerel çalıştığı için hassas materyali güvenle işleyebilirsiniz.