Dil seç

Metinden Base64'e Kodlayıcı

Metni tarayıcıda anında Base64'e kodlayın. URL güvenli alfabe ve dolgu seçenekleriyle çıktıyı özelleştirin, sonucu kopyalayın veya dosya olarak indirin.

Mehmet Demiray Yayınlandı Güncellendi
Paylaş
URL'ler için - ve _ kullanın ve = dolgusunu kaldırın
Her 76 karakterde bir satır sonu ekle

Base64 Kodlama Nedir?

Base64, ikili (binary) verileri yalnızca metin karakterleriyle temsil etmenin bir yoludur. Bilgisayarlar bir görsel, ses dosyası veya herhangi bir dosyayı arka planda baytlar halinde tutar. Bu baytların bir kısmı ekranda görünmeyen ya da metin olarak taşınırken bozulan değerler içerir. Base64 Kodlayıcı, bu baytları herkesin güvenle aktarabileceği, okunabilir bir metne dönüştürür.

Yöntemin adı, kullandığı alfabenin 64 karakterden oluşmasından gelir. Bu alfabe şunları içerir: A harfinden Z harfine kadar büyük harfler, a harfinden z harfine kadar küçük harfler, 0 ile 9 arasındaki rakamlar ve son olarak + ile / işaretleri. Toplamda 26 büyük harf, 26 küçük harf, 10 rakam ve 2 simge eder 64.

Base64 bir şifreleme yöntemi değildir. Amacı veriyi gizlemek değil, farklı ortamlar arasında güvenle taşımaktır. E-posta sistemleri, URL adresleri veya JSON gövdeleri gibi yalnızca metinle çalışan kanallarda ikili veriyi kaybetmeden iletmek için kullanılır. Herkes kodlanmış bir metni tekrar orijinal haline çevirebilir, bu yüzden gizlilik gerektiren durumlarda gerçek bir şifreleme katmanı şarttır.

Kullanımı basittir. Metninizi girersiniz, araç saniyeler içinde karşılığını üretir. Örneğin merhaba kelimesi Base64 olarak bWVyaGFiYQ== şeklinde ifade edilir. Ürettiğiniz sonucu kopyalayabilir ya da dosya olarak indirebilirsiniz. Tüm işlem tarayıcınızın içinde gerçekleşir, girdiğiniz veri hiçbir sunucuya gönderilmez.

Kodlama Nasıl Çalışır?

Base64'ün temel mantığı, veriyi 3 baytlık gruplara bölmektir. Her bayt 8 bittir, dolayısıyla üç bayt toplam 24 bit yapar. Bu 24 bit, altışar bitlik 4 parçaya yeniden bölünür. Altı bitin alabileceği değer aralığı 0 ile 63 arasındadır ve bu tam olarak 64 karakterlik alfabenin bir öğesine karşılık gelir.

Süreç şu adımlarla ilerler:

  1. Girdi metni önce baytlara dönüştürülür.
  2. Baytlar üçerli gruplara ayrılır.
  3. Her grup dört adet altı bitlik değere yeniden düzenlenir.
  4. Her altı bitlik değer, alfabedeki ilgili karaktere çevrilir.

Bu yapı nedeniyle çıktı, girdiden her zaman daha uzundur. Her 3 bayt 4 karaktere dönüştüğü için boyut yaklaşık olarak %33 büyür. Büyüme oranını şöyle ifade edebiliriz:

c¸ıktı=girdi×43\text{çıktı} = \text{girdi} \times \frac{4}{3}

Girdinin bayt sayısı üçe tam bölünmezse ne olur? İşte bu noktada dolgu (padding) devreye girer. Eğer son grupta yalnızca bir bayt kalırsa çıktının sonuna iki tane = işareti, iki bayt kalırsa bir tane = işareti eklenir. Bu işaretler, çözme işlemi sırasında orijinal veri uzunluğunun doğru şekilde geri hesaplanmasını sağlar. Kodlanmış metni tekrar orijinal haline getirmek istediğinizde Base64 çözme aracı tam da bu adımları tersine çalıştırır.

Standart ve URL Güvenli Alfabe Farkı

Base64'ün standart alfabesi RFC 4648 belgesiyle tanımlanmıştır ve + ile / karakterlerini içerir. Bu iki karakter çoğu ortamda sorunsuz çalışır. Ancak bir web adresinin veya dosya adının parçası olduklarında sorun çıkarırlar.

Sorunun kaynağı şudur: URL adreslerinde / işareti dizin ayırıcısı olarak özel bir anlam taşır. + işareti ise bazı sistemlerde boşluk karakteri olarak yorumlanır. Kodlanmış bir metni doğrudan bir bağlantıya yerleştirdiğinizde, tarayıcı ya da sunucu bu karakterleri yanlış okuyabilir ve veriniz bozulur. Dosya sistemlerinde de / işareti klasör ayracı olduğu için dosya adında kullanılamaz.

Bu yüzden URL güvenli varyant geliştirilmiştir. Fark şu tabloda net görülür:

Karakter Standart URL güvenli
62. değer + -
63. değer / _

Görüldüğü gibi yalnızca iki karakter değişir. + yerine tire -, / yerine alt çizgi _ kullanılır. Alfabenin geri kalanı aynı kalır, dolayısıyla veri kaybı olmaz.

Base64 Kodlayıcı içinde URL güvenli alfabeyi tek bir seçenekle etkinleştirebilirsiniz. Kodladığınız değeri bir sorgu parametresine, bir bağlantıya veya bir dosya adına yerleştirecekseniz bu seçeneği açmanız kaçınılmaz bir tercihtir. Yalnızca metin gövdesinde taşıyacaksanız standart alfabe yeterlidir. Adres içinde geçen özel karakterleri kodlamak için ayrıca URL kodlama aracı farklı bir amaca hizmet eder ve Base64 ile karıştırılmamalıdır.

Base64 Nerelerde Kullanılır?

Base64, ikili veriyi metin kanallarından taşımanın standart yolu olduğu için yazılım dünyasında sık karşınıza çıkar. En yaygın kullanım alanları şunlardır:

  • Data URI ile gömülü içerik: Küçük bir görseli veya yazı tipini ayrı dosya olarak sunmak yerine, doğrudan HTML ya da CSS içine Base64 metni olarak gömebilirsiniz. Böylece sayfa yüklenirken ekstra bir ağ isteği yapılmaz. Bu yöntem küçük simgeler için idealdir, büyük dosyalarda ise sayfa boyutunu şişireceği için önerilmez.
  • HTTP Basic kimlik doğrulama: Kullanıcı adı ve parola, iki nokta üst üste ile birleştirilir ve Base64 ile kodlanarak istek başlığına eklenir. Bu bir güvenlik önlemi değil, yalnızca bir taşıma biçimidir. Bu yüzden mutlaka HTTPS ile birlikte kullanılmalıdır.
  • E-posta ekleri: E-posta protokolleri temelde metin taşımak için tasarlanmıştır. Bir belgeyi ya da fotoğrafı eklediğinizde, dosya arka planda Base64'e çevrilerek gönderilir. Alıcı tarafta tekrar orijinal haline döner.
  • JSON gövdeleri: Bir API'ye ikili veri göndermeniz gerektiğinde, JSON yalnızca metin kabul ettiği için veriyi Base64 metnine çevirirsiniz. Bu, küçük dosyaları API çağrılarıyla iletmenin pratik yoludur.

Bir dosyayı doğrudan kodlamak istiyorsanız metin yapıştırmak yerine dosyadan Base64 üretme aracı işinizi kolaylaştırır. Kodlanmış bir metni tekrar dosyaya dönüştürmek içinse ters yönde çalışan bir araç kullanılır.

Unicode ve Türkçe Karakterlerin Kodlanması

Base64'ün doğrudan çalıştığı birim bayttır, karakter değil. Bu ayrım özellikle Türkçe metinlerde önemlidir. ç, ş, ğ, ı, ö, ü gibi harfler ya da bir emoji, tek bir bayta sığmaz. Bu karakterler bilgisayarda birden fazla baytla temsil edilir.

Bu noktada UTF-8 devreye girer. UTF-8, dünyadaki tüm karakterleri baytlara dönüştüren evrensel bir kodlamadır. Base64'e vermeden önce metin mutlaka UTF-8 baytlarına çevrilmelidir. Base64 Kodlayıcı bu adımı sizin yerinize otomatik yapar. Türkçe bir cümleyi, emojiyi ya da başka bir alfabedeki metni yapıştırdığınızda araç önce UTF-8 dönüşümünü uygular, sonra Base64 kodlamasını gerçekleştirir.

Bu iki aşamalı yapı sayesinde hiçbir karakter kaybolmaz. Örneğin şğü gibi bir dizeyi kodladığınızda, çözme işlemi tamamlandığında yine aynı harfleri elde edersiniz. Eğer bir araç UTF-8 adımını atlar ve karakterleri tek baytmış gibi işlerse, Türkçe metinler çözüldüğünde bozuk veya anlamsız simgelere dönüşür.

Pratik açıdan sizin ek bir işlem yapmanıza gerek yoktur. Metin kutusuna Türkçe içeriği doğrudan yazabilir ya da yapıştırabilirsiniz. Araç, karakter sayısı ile bayt sayısının farklı olabileceğini bilir ve çıktıyı buna göre üretir. Bu yüzden Türkçe bir metnin Base64 karşılığı, aynı uzunluktaki İngilizce bir metne göre biraz daha uzun olabilir, çünkü aksanlı harfler daha fazla bayt kaplar.

Base64 Şifreleme Değildir

En sık yapılan hatalardan biri, Base64'ü bir güvenlik önlemi sanmaktır. Kodlanmış metin ilk bakışta okunamaz göründüğü için pek çok kişi verisinin korunduğunu düşünür. Gerçek bunun tam tersidir. Base64 herkese açık, standart ve geri döndürülebilir bir dönüşümdür.

Aradaki fark şudur:

  • Kodlama (encoding): Veriyi taşınabilir bir biçime çevirir. Herkes gizli bir anahtar olmadan geri döndürebilir. Base64 buna örnektir.
  • Şifreleme (encryption): Veriyi yalnızca doğru anahtara sahip olanın çözebileceği hale getirir. Anahtar olmadan içerik anlaşılamaz.

Bir parolayı, kredi kartı bilgisini ya da kişisel veriyi yalnızca Base64 ile kodlayıp göndermek, o veriyi hiç korumamakla neredeyse aynı şeydir. Kodlanmış metni eline geçiren herkes, herhangi bir çözme aracıyla saniyeler içinde orijinal içeriğe ulaşabilir.

O halde Base64 ne zaman doğru tercihtir? Gizli olmayan verileri taşımak istediğinizde. Bir görseli sayfaya gömerken, bir API çağrısında ikili veri iletirken ya da bir e-posta eki hazırlarken amacınız gizlilik değil, uyumlu taşımadır. Bu durumlarda Base64 tam olarak işini yapar.

Gerçekten gizlilik gerekiyorsa katmanları doğru sıralayın. Önce veriyi güçlü bir şifreleme algoritmasıyla şifreleyin, ardından ortaya çıkan ikili çıktıyı taşımak için Base64 kullanın. Bu iki adım birbirini tamamlar ama birbirinin yerine geçmez. Base64'ü bir zarf, şifrelemeyi ise o zarfın içindeki kilitli kutu olarak düşünebilirsiniz.

En çok yanıtladıklarımız.

Girdiğim veriler bir sunucuya gönderiliyor mu?

Hayır. Base64 Kodlayıcı tüm işlemi doğrudan tarayıcınızın içinde yapar. Yazdığınız metin hiçbir sunucuya iletilmez ve hiçbir yerde saklanmaz. Bu yüzden gizli bir bağlantı kopmuş olsa bile aracı çevrimdışı kullanmaya devam edebilirsiniz.

Base64 metnini nasıl geri çözerim?

Kodlama işlemi tersine çevrilebilir. Elinizdeki Base64 metnini orijinal haline döndürmek için Base64 çözme aracını kullanabilirsiniz. Metni yapıştırmanız yeterlidir, kalan adımları araç otomatik yürütür.

Çıktımın sonundaki bir veya iki = işareti ne anlama geliyor?

Bu işaretler dolgu (padding) karakterleridir. Base64 veriyi üçer baytlık gruplarla işler. Son grup üçe tam bölünmüyorsa boşluğu doldurmak için = eklenir. Son grupta bir bayt kalırsa iki =, iki bayt kalırsa bir = gelir. Bunlar hata değil, orijinal veri uzunluğunun doğru hesaplanmasını sağlayan normal işaretlerdir.

Dolgu işaretlerini kaldırabilir miyim?

Evet, araçta dolgu karakterlerini atlamak için bir seçenek bulunur. Bazı sistemler = işaretini kabul etmez ya da beklemez. Bu gibi durumlarda dolgusuz çıktı üretebilirsiniz. Ancak metni tekrar çözecek tarafın da dolgusuz biçimi desteklediğinden emin olun, aksi halde çözme sırasında sorun çıkabilir.

URL güvenli varyantı ne zaman kullanmalıyım?

Kodladığınız değeri bir web adresinin, sorgu parametresinin ya da dosya adının içine yerleştirecekseniz URL güvenli seçeneği açın. Standart alfabedeki + ve / karakterleri bu ortamlarda yanlış yorumlanır ve verinizi bozar. URL güvenli varyant bunların yerine - ve _ kullanarak sorunu önler.

Base64 verimi güvence altına alır mı?

Hayır. Base64 bir şifreleme yöntemi değildir, herkese açık ve geri döndürülebilir bir dönüşümdür. Kodlanmış metni eline geçiren herkes onu kolayca çözebilir. Gerçek gizlilik için veriyi önce güçlü bir şifreleme algoritmasıyla koruyun, Base64'ü yalnızca taşıma biçimi olarak kullanın.

Bir görsel ya da PDF dosyasını doğrudan kodlayabilir miyim?

Bu araç metin girdisi için tasarlanmıştır. Bir dosyayı doğrudan kodlamak isterseniz metin yapıştırmak yerine dosyadan Base64 üretme aracını kullanmanız daha pratiktir. Kodlanmış bir metni tekrar indirilebilir dosyaya dönüştürmek içinse Base64 metnini dosyaya çevirme aracı işinizi görür.

Kodlanmış metin neden orijinalinden daha uzun?

Base64 her 3 baytı 4 karaktere dönüştürdüğü için çıktı yaklaşık %33 büyür. Bu, yöntemin doğasından kaynaklanan beklenen bir durumdur. Türkçe metinlerde aksanlı harfler birden fazla bayt kapladığı için büyüme biraz daha belirgin olabilir.