Base64
- 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
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.
İlgili sayfalar
- Karakter kodlamasıProgramlamanın Temelleri, s. 34Karakter kodlaması, metni byte'lara ve geri metne çeviren kurallardır; her harfin saklanıp gönderilmesini sağlar. Bugünkü standart UTF-8'dir.
- JWTGüvenlik, s. 17JWT, kullanıcı kimliği ve son kullanma zamanı gibi bilgileri taşıyan, imzalı ve kompakt bir token'dır; sunucunun oturum aramadan istekleri doğrulamasını sağlar.
- HTTPWeb Geliştirme, s. 20HTTP, tarayıcıların, uygulamaların ve sunucuların basit bir istek-yanıt döngüsüyle web sayfaları ve veri alışverişi yapmasını sağlayan protokoldür.
- URLWeb Geliştirme, s. 53URL, web'deki bir kaynağın adresidir; şema, sunucu adı, yol ve sorgu dizesi gibi bölümlerden oluşur ve tarayıcıya kaynağın nereden, nasıl alınacağını söyler.
- ŞifrelemeGüvenlik, s. 42Şifreleme, veriyi bir anahtarla karıştırarak yalnızca doğru anahtara sahip olanın onu özgün ve okunabilir hâline geri çevirebilmesini sağlama işlemidir.
- HashingGüvenlik, s. 12Hashing, bir girdiyi tek yönlü bir fonksiyonla sabit uzunlukta bir değere dönüştürmektir; veri bütünlüğünü doğrulamaya ve parolaları güvenle saklamaya yarar.
Kaynaklar
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin