Base64 Çevirici (Encode / Decode)

Metni Base64'e kodlayın veya Base64'ü metne çözün — UTF-8 uyumlu, tamamen tarayıcınızda.

1.278 görüntülenme

Nasıl Çalışır

Base64, ikili veriyi 64 yazdırılabilir karakterden oluşan bir alfabeyle düz metne çevirir: A–Z, a–z, 0–9, artı + ve / (64 sembol tam olarak 2⁶'dır, adının Base64 olmasının nedeni budur). Kodlayıcı girdiyi 3 baytlık (24 bit) gruplar halinde okur, bu 24 biti dörder 6'şar bitlik parçaya böler ve her 6 bitlik parçayı alfabeden bir karaktere eşler — böylece 3 bayt ikili veri her zaman tam olarak 4 karakter metne dönüşür. Girdi uzunluğu 3'ün tam katı değilse, son grup çıktı uzunluğunu 4'ün katı tutmak için bir veya iki = karakteriyle doldurulur.

Somut bir örnek: "Man" kelimesini oluşturan üç bayt (77, 97, 110 — ikilik tabanda 01001101 01100001 01101110) dörder 6'şar bitlik parçalara yeniden gruplanır (010011, 010110, 000101, 101110), her biri bir karaktere eşlenir ve TWFu elde edilir. Her 3 girdi baytı her zaman 4 çıktı karakterine genişlediğinden, Base64 kodlu veri orijinalinden güvenilir bir şekilde yaklaşık %33 daha büyüktür — 300 KB'lik bir görsel yaklaşık 400 KB'lik bir Base64 dizisine dönüşür; bu, görselleri data: URI'si olarak gömerken ya da ikili dosyaları JSON veya e-posta içine eklerken önemlidir.

Bu araç, metni önce UTF-8'e doğru şekilde kodlayarak Unicode'u düzgün işler; böylece çok baytlı karakterler ve emojiler ("çğü 😀") bozulmadan gidip döner — saf bir JavaScript btoa() çağrısı bunlarda hata verir çünkü karakter başına tek bayt bekler. Her şey tarayıcınızda yerel çalışır; yazdığınız hiçbir şey hiçbir yere gönderilmez.

Base64, çoğu kişinin fark etmediği pek çok yerde sürekli karşımıza çıkar: bir HTML <img src="data:image/png;base64,..."> etiketi, bir dosyaya bağlantı vermek yerine tüm görseli doğrudan sayfanın içine gömer; Authorization: Basic HTTP başlığı Base64 kodlu bir "kullaniciadi:parola" dizesi taşır (bu yalnızca biçimlendirmedir, koruma değildir — aktarım sırasında gizliliği gerçekten sağlayan TLS'dir); e-posta ekleri, orijinal MIME standardından beri Base64 ile kodlanır, çünkü SMTP 7 bitlik metin taşımak üzere tasarlanmıştır, ham ikili veri için değil; JSON Web Token'lar (JWT) ise imzalı bir ikili yapıyı nokta ile ayrılmış üç metin parçasına sığdırmak için URL-güvenli varyantı kullanır.

Bilinmesi Gerekenler

  • Base64 şifreleme değildir — sıfır gizlilikli, herkesçe bilinen geri çevrilebilir bir gösterimdir. Aynı alfabeyle herkes anında çözebilir; yalnızca ikili veriyi yalnızca metin taşıyabilen kanallardan (e-posta MIME ekleri, data URI'leri, JSON alanları, HTTP Basic-Auth başlıkları) güvenle geçirmek için vardır, içeriği gizlemek için değil.
  • URL-güvenli varyant: + ve / URL'lerde özel anlam taşıdığından, "URL-güvenli" bir Base64 alfabesi bunları - ve _ ile değiştirir ve genelde = dolgusunu atlar. Bu araç her iki varyantı da otomatik çözer.
  • Boyut maliyeti sabit ve öngörülebilir: ~%33'lük büyüme (4/3 oranı) yükün kendisi için kesindir — ham ikili yükleme kabul eden API'lerin, Base64'e sarılmış JSON gövdeleri isteyenlerden genelde daha bant genişliği verimli olmasının nedeni budur.
  • Dolgu, kalanı söyler: tek bir =, orijinal veri uzunluğunun 3'ün katından 2 bayt fazla olduğu anlamına gelir; iki = ise 1 bayt fazla demektir. Hiç dolgu yoksa girdi tam olarak 3'ün katı baytmış demektir.

Sıkça Sorulan Sorular

Çözülen çıktı neden bozuk görünüyor?

Genelde girdi geçerli Base64 değildir (kesik, ya da +/ yerine URL-güvenli -_ karakterli) veya orijinal baytlar zaten metin değildir. Bu araç URL-güvenli varyantı otomatik çözer.

Dosya kodlayabilir miyim?

Bu araç metin içindir. Dosyalar için kalıp data: URI'dir; bu, bir tarayıcının ya da e-posta istemcisinin nasıl görüntüleyeceğini bilmesi için Base64 dizesini bir MIME türü ön ekiyle sarar — çoğu dilde bunu oluşturmak tek satırdır (PHP base64_encode(file_get_contents(...)), JS FileReader.readAsDataURL). Çok büyük dosyalar, ~%33'lük boyut fazlası yüzünden genelde Base64'e sarılmak yerine ham ikili olarak gönderilmesi daha iyi olan dosyalardır.

Şifre saklamak için Base64 güvenli mi?

Hayır — hiçbir anahtar ya da sır içermeden, tasarımı gereği anında geri çevrilir. HTTP Basic auth onu yalnızca biçimlendirme için kullanır ("kullanici:parola"yı başlık-güvenli bir dizeye paketler) ve aktarımdaki gerçek gizliliği tamamen TLS/HTTPS'ye bırakır. Şifreler yavaş ve tuzlanmış bir algoritmayla (bcrypt, argon2, scrypt) hash'lenerek saklanmalıdır — asla kodlanarak, asla Base64 ile değil; çünkü herkes onu tek satır kodla geri çevirebilir.

Base64 kodlu veri neden her zaman yaklaşık %33 daha büyük?

Çünkü kodlama, girdinin her 3 baytını (24 bit) 4 çıktı karakterine eşler ve her çıktı karakteri bir baytın 8 biti yerine yalnızca 6 bit bilgi taşır — bu, içeriğe göre değişmeyen sabit bir 4/3 genişleme oranıdır. 3 MB'lık bir dosya her seferinde yaklaşık 4 MB'lik bir Base64 dizisine dönüşür.

Standart Base64 ile "URL-güvenli" varyant arasındaki fark ne?

Standart Base64 alfabesinde + ve / bulunur, ikisi de URL'ler ve dosya yolları içinde ayrılmış bir anlam taşır; bu yüzden URL-güvenli bir varyant bunları - ve _ ile değiştirir (ve genelde = dolgusunu atlar), böylece kodlanmış dizi kaçış karakteri gerektirmeden doğrudan bir URL veya dosya adında yer alabilir. Bu araç her iki varyantı da otomatik tanıyıp çözer.

Yorumlar

Henüz yorum yok — ilk yorumu siz yazın!

Benzer Araçlar