# Base64

Adres: https://softwaredictionary.org/tr/terimler/base64
Kategori: Programlamanın Temelleri
Son güncelleme: 2026-10-05
Okunuşu: beys altmış dört

Kısaca: Base64, resim ya da anahtar gibi her tür ikili veriyi yalnızca 64 güvenli metin karakteriyle yazar; böylece veri metin için yapılmış sistemlerden geçebilir.

## Base64 nedir?

Base64 byte'ları düz metne çevirir. Veriyi üçer byte'lık parçalar hâlinde alır, bu 24 biti 6 bitlik dört gruba böler ve her grubu 64 karakterden biriyle yazar: A'dan Z'ye ve a'dan z'ye harfler, 0'dan 9'a rakamlar, bir de `+` ve `/`. Veri üçer byte'lık gruplara tam bölünmediğinde sonu `=` işaretleriyle doldurulur.

Base64'ün var olma nedeni, metin için yapılmış pek çok sistemin ham byte'ları bozabilmesidir: e-posta, JSON, URL'ler, HTML ve HTTP başlıkları. Bu sayede bir resim bir e-postanın ya da bir JSON alanının içinde taşınabilir, küçük bir dosya data URL olarak doğrudan web sayfasına yerleşebilir ve HTTP Basic kimlik doğrulaması kullanıcı adıyla parolayı taşır. base64url adlı bir türü `+` ve `/` yerine `-` ve `_` kullanır; sonuç adreslerde ve dosya adlarında güvenle kullanılabilir. JWT'ler bu türü kullanır.

Bedeli boyuttur: her 3 byte 4 karaktere dönüşür, yani kodlanmış metin veriden yaklaşık üçte bir daha büyüktür. Ayrıca Base64 bir kodlamadır, şifreleme değildir. Herkes onu bir anda çözebilir, dolayısıyla hiçbir şeyi gizlemez: Base64 ile yazılmış bir parola, düz metin bir parola kadar açıktadır.

## Önemli noktalar

- Base64 her tür byte'ı 64 metin karakteriyle yazar.
- Her 3 byte 4 karaktere dönüşür; veri yaklaşık üçte bir büyür.
- İkili veriyi e-posta, JSON, URL'ler ve HTTP başlıkları üzerinden taşır.
- Base64 bir kodlamadır, şifreleme değildir: herkes onu çözebilir.

## Örnek: JavaScript'te Base64 kodlama ve çözme

```javascript
const encoded = btoa("hi!");   // "aGkh"
const decoded = atob(encoded); // "hi!"

// btoa only takes Latin-1 text, so other text goes through its UTF-8 bytes first
const bytes = new TextEncoder().encode("çay");
const safe = btoa(String.fromCharCode(...bytes)); // "w6dheQ=="
```

## Sık sorulan sorular

**Base64 bir şifreleme mi?**

Hayır. Base64 yalnızca byte'ların nasıl yazıldığını değiştirir ve herkes onu bir anahtar olmadan geri çevirebilir. Veriyi gizli tutmak için şifreleyin; Base64 yalnızca sonucu metin olarak taşımanın bir yoludur.

**Base64 neden bazen = ya da == ile bitiyor?**

Base64 üçer byte'lık gruplarla çalışır. Son grupta yalnızca bir ya da iki byte kaldığında, çıktının uzunluğu dördün katı olsun diye sonuna `==` ya da `=` eklenir. JWT'ler gibi bazı biçimler bu dolguyu kullanmaz.

## Kaynaklar

- [RFC 4648: The Base16, Base32, and Base64 Data Encodings](https://www.rfc-editor.org/rfc/rfc4648.html)
- [MDN: Base64](https://developer.mozilla.org/en-US/docs/Glossary/Base64)

---

Software Dictionary: https://softwaredictionary.org/tr · https://softwaredictionary.org/tr/llms.txt
