Base64 Kodlaması Ne İçin Kullanılır?
Base64'ün baytları metne nasıl çevirdiğini, veri URL'leri, e-posta ve JWT'lerde neden kullanıldığını, eklediği alanı ve neden şifreleme olmadığını öğrenin.
Yazan: TIG Tools editorial teamYayınlanma: 26 Ekim 20264 dakikalık okuma
Base64, ikili verileri sınırlı bir metin karakter kümesi kullanarak temsil etmenin bir yoludur. Bir sistem metin beklerken bayt taşıması gerektiğinde, örneğin bir e-posta iletisi veya satır içi görüntüde kullanışlıdır. Verileri gizlemez veya korumaz: Base64 kodlamadır, şifreleme değildir.
Base64 nasıl çalışır?
Bir dosya baytlardan oluşur ve bir bayt 0 ile 255 arasında herhangi bir değer alabilir. Bazı sistemler metni, rastgele bayt değerlerine göre daha kolay işler. Base64, her üç baytlık grubu 64 karakterlik bir alfabeden seçilen dört yazdırılabilir karakterle temsil eder: büyük harfler, küçük harfler, rakamlar, + ve /.
Örneğin, üç ASCII karakteri Man, onaltılık düzende 4D 61 6E baytlarıdır. Base64 bu baytları TWFu olarak kodlar. Ters işlem TWFu değerini özgün üç bayta geri dönüştürür.
Girdi bayt sayısı üçe bölünmüyorsa Base64, son grubu tamamlamak için = dolgusu kullanır. Tek baytlık M girdisi TQ== olur. Dolgu, standart Base64'ün biçimlendirme parçasıdır; ek kaynak veriyi temsil etmez. Bazı biçimler, kuralları izin verdiğinde dolguyu atlar.
Metin için olağan süreç, önce karakterleri UTF-8 gibi bir karakter kodlamasıyla baytlara dönüştürmek, ardından bu baytları Base64 ile kodlamaktır. Bu, ASCII dışı metinler için önemlidir: aynı görünür karakter, farklı karakter kodlamalarında farklı bayt temsiline sahip olabilir. Metin dönüştürmelerini Base64 Kodlayıcı / Çözücü ile deneyebilirsiniz.
Base64'ün yaygın kullanımları
Metin tabanlı sistemlerde ikili veri taşıma
Base64, bir biçim veya arayüz metin etrafında tasarlanmış ancak sıradan metin olmayan verileri içermesi gerektiğinde kullanışlıdır. Baytları yazdırılabilir karakterlere dönüştürerek verilerin bir metin alanına, belgeye veya iletiye yerleştirilmesini kolaylaştırır.
Dönüştürme, ikili veriyi küçültmez veya anlamlı bir metne dönüştürmez. Baytlara, daha sonra aynı baytlara geri çözülebilecek metin uyumlu bir temsil verir.
Veri URL'leri ve satır içi görüntüler
Bir veri URL'si, URL benzeri bir dizede doğrudan bir medya türü ve veri içerebilir. Base64 biçimi şöyle görünür:
data:image/png;base64,iVBORw0KGgo...
Burada image/png medya türünü belirtir, base64 verinin nasıl temsil edildiğini gösterir ve son kısım kodlanmış görüntü baytlarını içerir. Üç nokta yalnızca bir yer tutucudur; gerçek bir değer tam kodlanmış veriyi içerir.
Veri URL'leri, doğrudan bir belgeye veya stil sayfasına eklenmesi gereken küçük görüntüler veya diğer kaynaklar için pratik olabilir. Ayrıca içeren HTML veya CSS'i büyütebilir ve veri, bağımsız olarak istenip önbelleğe alınabilecek ayrı bir dosya değildir. Daha büyük varlıklar için normal bir görüntü URL'si genellikle daha uygundur. Görüntüyü Base64'e Dönüştürme aracı, bu tür kullanım için bir görüntünün kodlanmış temsilini oluşturabilir.
E-posta ve MIME ekleri
E-posta iletileri MIME kullanılarak yapılandırılır; bu, bir iletinin ekler dahil farklı içerik türleri içermesine olanak tanır. Base64, MIME'in ikili içeriği metin açısından güvenli karakterler olarak temsil etmek için kullandığı aktarım kodlamalarından biridir. Bir e-posta istemcisi, ek baytlarını geri elde etmek için bu temsili çözebilir.
Bu bir aktarım temsilidir, dosyanın kendisinde bir değişiklik değildir. Base64 ile kodlanmış bir görüntü eki, çözüldükten sonra yine aynı görüntüdür. Kodlanmış biçim daha uzundur ve MIME, Base64 içeriğini en fazla 76 karakterlik satırlara sarar.
JWT'ler ve Base64url
Kompakt bir JSON Web Token genellikle noktayla ayrılmış üç bölümden oluşur: başlık, yük ve imza. Bu biçimde bölümler, Base64'ün URL açısından güvenli bir türevi olan Base64url kullanır. + yerine - ve / yerine _ kullanır; JWT bölümlerinde dolgu genellikle atlanır.
Örneğin, bir belirteç şöyle görünebilir:
eyJ... . eyJ... . abc...
Yukarıdaki boşluklar okunabilirlik içindir; gerçek bir kompakt belirteçte noktaların çevresinde boşluk yoktur. Base64url, kodlanmış bölümleri URL'lerde ve ilgili bağlamlarda kullanıma uygun hale getirir. Başlık veya yükü gizli yapmaz. İmzalı bir JWT'de, belirtece sahip olan herkes genellikle bu bölümleri çözebilir ve içeriklerini okuyabilir. İmza, bütünlüğü ve yayınlayanı doğrulamaya yardımcı olabilir, ancak şifreleme değildir. JWT ayrıca şifreli belirteç biçimlerini de destekler; bu nedenle bir belirtecin gizli olup olmadığı yalnızca Base64url'ye değil, belirteç türüne ve nasıl oluşturulduğuna bağlıdır. JWT Çözücü, bir belirtecin okunabilir bölümlerini incelemeye yardımcı olabilir; tarayıcınızda çözer ve imzayı doğrulamaz. Geçerli bir belirteç, süresi dolana kadar bir parola gibi çalışır; bu nedenle süresi dolmuş veya test belirteçlerini tercih edin.
Base64 veriyi ne kadar büyütür?
Base64, her üç girdi baytını dört çıktı karakteriyle temsil eder. n baytlık girdi uzunluğu için dolgulu çıktı uzunluğu 4 × ceil(n / 3) karakterdir. Girdi uzunluğu üçün katı olduğunda, kodlanmış biçim özgün bayt sayısından yaklaşık üçte bir daha uzundur. Son eksik grup dolgu karakterleri içerebilir.
Örneğin, 300 bayt 400 Base64 karakteri üretir. Bu, çevreleyen söz dizimi veya satır sonlarından önce girdi bayt sayısından 100 karakter fazladır. Kodlanmış veriyi bir veri URL'sine yerleştirirseniz, önek de daha fazla karakter ekler.
Base64 sıkıştırma değildir. Genellikle veri miktarını artırır, bu nedenle dosya boyutunu küçültmenin iyi bir yolu değildir. Amaç bir görüntüyü küçültmekse Base64 kodlaması yerine uygun bir görüntü biçimi veya sıkıştırma yöntemi kullanın.
Base64 şifreleme değildir
Kodlama, verinin nasıl temsil edildiğini değiştirir; gizli bir anahtar gerektirmez. Base64 dizesine sahip olan herkes yazılım veya bir araç kullanarak onu çözebilir. Base64 dizesi alışılmadık görünebilir, ancak bu bir güvenlik engeli değildir.
Parolaları, API anahtarlarını, özel iletileri veya diğer gizli bilgileri korumak için Base64 kullanmayın. Amaca uygun tasarlanmış şifreleme kullanın ve anahtarları güvenli şekilde yönetin. Yalnızca sistemler arasında veri taşımanız gerekiyorsa Base64 uygun olabilir; ancak erişim denetimi veya gizlilik koruması olarak değerlendirilmemelidir.
Pratik bir örnek
Kısa bir metin değeriniz, M, olduğunu ve baytlarını yazdırılabilir metin bekleyen bir alan üzerinden göndermeniz gerektiğini varsayalım. Önce M'yi UTF-8 baytı olarak temsil edin. Bu ASCII karakteri için bu bayt onaltılık düzende 4D'dir. Base64, tek baytlık grubu TQ== olarak temsil eder:
Original text: M
UTF-8 byte: 4D
Base64: TQ==
TQ== değerini Base64 ile çözen bir alıcı, 4D baytını elde eder ve aynı karakter kodlamasını kullanarak onu M olarak yorumlayabilir. Veri bunun yerine bir PNG dosyası olsaydı, çözme okunabilir metin değil PNG baytları üretirdi. Doğru sonraki adım, bu baytları bir görüntü olarak kaydetmek veya işlemektir.
Ne zaman kullanmalısınız?
Base64'ü, belirli bir biçim veya aktarım ikili verinin metin olarak temsil edilmesini gerektirdiğinde kullanın; örneğin bir MIME eki, küçük bir gömülü kaynak veya bir JWT bölümü. Ek boyutu, özgün baytları kullanmadan önce çözme gereğini ve sonucun gizli olmadığını aklınızda bulundurun. Sıradan bağlantılar için, URL karakterlerini kodlamanız gerektiğinde URL kodlaması kullanın; Base64 ve URL kodlaması farklı sorunları çözer.
Özet
- Base64, baytları yazdırılabilir metin karakterleriyle temsil eder ve her üç baytı dört karakter olarak kodlar.
- MIME e-postası, veri URL'leri ve JWT Base64url bölümleri gibi yerlerde kullanılır.
- Kodlanmış veri, üçe bölünebilen girdi uzunlukları için yaklaşık üçte bir daha büyüktür; Base64 sıkıştırma değildir.
- Base64 şifreleme değildir: kodlanmış değere sahip olan herkes onu çözebilir.
Şimdi dene
Base64 Kodlayıcı / Çözücü aracını doğrudan tarayıcınızda ücretsiz kullanın. Kayıt gerekmez ve dosyalarınız cihazınızda kalır.
Base64 Kodlayıcı / Çözücü aracını aç