Base64 kodlayıcı ve çözücü nasıl kullanılır?
- Metni Base64'e dönüştürmek için Kodla, Base64'ü tekrar metne dönüştürmek için Çöz seçeneğini seçin.
- Girdinizi yapıştırın. Metin UTF-8 olarak işlenir; bu yüzden Türkçe karakterler gibi aksanlı harfler, Latin dışı alfabeler ve emojiler doğru çalışır.
- Sonuç bir URL'ye, dosya adına veya JWT'ye girecekse URL-safe seçeneğini açın.
- Çıktıyı kopyalayın.
Kodlama ve çözme yerel olarak tarayıcınızda yapılır; yapıştırdığınız hiçbir şey yüklenmez veya saklanmaz.
Base64 nasıl çalışır?
RFC 4648'de tanımlanan Base64, her türlü ikili veriyi 64 yazdırılabilir ASCII karakteriyle gösterir: A–Z, a–z, 0–9, + ve /. Amacı, ikili içeriğin e-posta, JSON, XML ve HTTP başlıkları gibi metin için tasarlanmış sistemlerden güvenle geçebilmesidir.
Algoritma girdiyi her seferinde 3 bayt (24 bit) olarak alır ve dört adet 6 bitlik gruba böler. Her 6 bitlik değer (0–63) alfabeden bir karakter seçer. Süreci Man kelimesiyle görelim:
| Adım | Değer |
|---|---|
| Baytlar | M=77, a=97, n=110 |
| 24 bit | 01001101 01100001 01101110 |
| 6 bitlik gruplar | 010011 010110 000101 101110 = 19, 22, 5, 46 |
| Base64 | TWFu |
Her 3 bayt 4 karaktere dönüştüğü için Base64 çıktısı girdiden yaklaşık %33 daha büyüktür (MIME gibi bir biçim satır sonu ekliyorsa bunlar da eklenir).
= ile dolgu (padding)
Girdi uzunluğu üçün katı değilse son grup doldurulur. Geriye bir bayt kalırsa iki karakter artı ==, iki bayt kalırsa üç karakter artı = üretilir. Örneğin Hi, SGk= olarak kodlanır.
URL-safe Base64
Standart + ve / karakterlerinin URL'lerde ve dosya yollarında özel anlamı vardır. RFC 4648 §5, base64url alfabesini tanımlar; bu alfabe onların yerine - ve _ kullanır. Dolgu çoğu zaman atlanır. JSON Web Token'lar dolgusuz base64url kullanır.
Standard: +/8=
URL-safe: -_8
Sık yapılan hatalar
Base64 şifreleme değildir
Base64'ü herkes anında çözebilir; ortada bir anahtar yoktur. Parolaları veya API anahtarlarını "gizlemek" için asla kullanmayın. Bütünlük kontrolleri için hash oluşturucu ile bir hash kullanın, gizlilik için de gerçek şifreleme kullanın.
JavaScript'te UTF-8
Tarayıcının yerleşik btoa() fonksiyonu yalnızca Latin-1 aralığındaki karakterleri kabul eder ve diğer her şey için hata verir. Önce metni UTF-8 baytlarına dönüştürün:
btoa("✓"); // InvalidCharacterError
const bytes = new TextEncoder().encode("✓");
btoa(String.fromCharCode(...bytes)); // "4pyT"
Alfabeleri karıştırmak
base64url verilerini katı bir standart çözücüyle çözmek, - ve _ karakterlerinde veya eksik dolguda başarısız olur. Çözmeden önce alfabeyi dönüştürün ve dolguyu dört karakterin katına tamamlayacak şekilde yeniden ekleyin.
Base64 ile nerede karşılaşırsınız?
- Data URI'ler, küçük dosyaları doğrudan HTML veya CSS'e gömer:
data:image/png;base64,iVBORw0KGgo... - HTTP Basic kimlik doğrulaması,
username:passwordbilgisini Base64 ile kodlanmış olarak gönderir.user:pass,Authorization: Basic dXNlcjpwYXNzhâline gelir; bu çok kolay geri çözülebildiği için Basic kimlik doğrulaması yalnızca HTTPS üzerinden kullanılmalıdır. Bu tür başlıkları HTTP başlık kontrolü aracıyla inceleyebilirsiniz. - E-posta ekleri (MIME) ile PEM sertifikaları ve anahtarları.
- Başlığı ve yükü (payload) base64url ile kodlanmış JSON olan JWT'ler. Bunları okumak için JWT çözücüyü kullanın.
printf 'text' | base64 kodlar, base64 -d çözer (eski macOS sürümleri -D kullanır). Sondaki satır sonunun da kodlanmaması için printf veya echo -n kullanın.Sıkça sorulan sorular
Base64 dizem neden = veya == ile bitiyor?
Bu dolgudur. Girdi uzunluğu üçe bölünemediğinde çözücüye son grubun kaç bayt içerdiğini bildirir.
Base64 güvenli mi?
Hayır. Bu bir kodlamadır, şifreleme değildir. Hiçbir gizlilik sağlamaz; yalnızca ikili verilerin metin olarak güvenle taşınmasını sağlar.
Kodlanmış çıktı neden girdiden büyük?
Her Base64 karakteri 8 yerine 6 bit taşır; bu yüzden 3 girdi baytı için 4 çıktı karakteri gerekir. Bu da yaklaşık üçte birlik bir ek yük demektir.
Base64 ile base64url arasındaki fark nedir?
Yalnızca iki karakter farklıdır: base64url, + ve / yerine - ve _ kullanır ve genellikle = dolgusunu atar; böylece sonuç ek bir kaçış işlemine gerek kalmadan URL'lere yerleştirilebilir.
Güncellendi