Base64 Encode / Decode

Metinleri Base64 formatında kodlayın veya çözümleyin

0 karakter
0 karakter

Base64 Kodlama Nedir?

Base64, ikili (binary) verileri yalnızca yazdırılabilir ASCII karakterlerinden oluşan bir metne dönüştüren kodlama yöntemidir. Adını, kodlamada 64 karakterlik bir alfabe kullanmasından alır: A-Z (26), a-z (26), 0-9 (10), + ve /. Boş kalan son bloklar ise = işaretiyle doldurulur. Yöntem, RFC 4648 standardında tanımlanmıştır ve e-postadan web geliştirmeye kadar pek çok alanda kullanılır.

Base64'ün var olma nedeni basittir: birçok eski protokol (e-posta, HTTP başlıkları, XML, JSON) yalnızca düz metin taşımak üzere tasarlanmıştır. Bir resmi, PDF'i ya da rastgele baytları bu kanallardan doğrudan geçirmeye çalışırsanız kontrol karakterleri bozulur veya kaybolur. Base64 bu veriyi güvenli karakterlere çevirerek taşımayı mümkün kılar. Bu araçla metinlerinizi tek tıkla kodlayabilir, mevcut bir Base64 dizesini de anında çözebilirsiniz.

Base64 Nasıl Çalışır?

Algoritma, girdiyi 3 baytlık (24 bit) gruplara böler. Her 24 bitlik grup, 6'şar bitlik 4 parçaya ayrılır. 6 bit 0 ile 63 arasında bir sayı ürettiği için her parça alfabedeki bir karaktere karşılık gelir. Sonuçta 3 bayt girdi, 4 karakter çıktı verir.

Çıktı uzunluğu = 4 × yukarı yuvarla(bayt sayısı ÷ 3)

Son grup 3 bayttan kısaysa: 1 bayt kalırsa ==, 2 bayt kalırsa = eklenir.

Adım adım kodlama

  1. Metin UTF-8 ile baytlara çevrilir (Türkçe karakterler 2 bayt yer kaplar).
  2. Baytlar 3'erli gruplara ayrılır ve bitleri art arda dizilir.
  3. 24 bit, 6'şar bitlik dört parçaya bölünür.
  4. Her parçanın değeri Base64 alfabesinden bir karakterle değiştirilir.
  5. Eksik kalan bloklar için sonuna = doldurma karakteri eklenir.

Base64 Örnekleri

Örnek 1: "Man" kelimesi

"Man" kelimesinin ASCII baytları 77, 97, 110 değerindedir. Bitleri 01001101 01100001 01101110 şeklindedir. Bu 24 bit 6'şarlı bölününce 010011 010110 000101 101110 elde edilir; ondalık karşılıkları 19, 22, 5, 46 olup alfabede sırasıyla T, W, F, u karakterlerine denk gelir. Sonuç: TWFu. Giriş tam 3 bayt olduğundan doldurma karakteri yoktur.

Örnek 2: "Merhaba" kelimesi

"Merhaba" 7 bayttır: iki tam grup (Mer, hab) ve 1 bayt artan "a". Son grup eksik olduğu için iki tane = eklenir. Sonuç: TWVyaGFiYQ==. Çıktı uzunluğu 4 × ⌈7÷3⌉ = 12 karakterdir; sayıp doğrulayabilirsiniz.

Örnek 3: Türkçe karakterli "Şeker"

"Ş" harfi UTF-8'de iki bayttır (C5 9E), diğer dört harf birer bayttır; toplam 6 bayt eder. 6 ÷ 3 = 2 tam grup olduğundan doldurma yoktur. Sonuç: xZ5la2Vy. Bu yüzden Türkçe metni Base64'e çevirirken UTF-8 desteği şarttır; aksi halde ş, ğ, ı gibi harfler bozulur. Bu aracın kodlayıcısı UTF-8'i doğru işler.

Örnek 4: Boyut artışı hesabı

100 KB'lık (102.400 bayt) bir görseli Base64 ile metne çevirmek istiyorsunuz. 102.400 ÷ 3 = 34.133,3; yukarı yuvarlanınca 34.134 grup olur. Çıktı 34.134 × 4 = 136.536 karakter (yaklaşık 133 KB) eder. Yani veri yaklaşık %33 şişer. 1 MB'lık (1.048.576 bayt) dosya ise 1.398.104 karaktere ulaşır.

Base64 Alfabesi (Kısa Tablo)

Değer aralığıKarakterlerNot
0 - 25A - ZBüyük harfler
26 - 51a - zKüçük harfler
52 - 610 - 9Rakamlar
62+URL-güvenli sürümde -
63/URL-güvenli sürümde _
doldurma=Son bloğu tamamlar

Base64, Hex ve Base64URL Karşılaştırması

YöntemBoyut artışıAlfabeTipik kullanım
Base64~%3364 karakterE-posta ekleri, Data URI, API
Base64URL~%3364 karakter (- ve _)JWT, URL parametreleri
Hex (onaltılık)%10016 karakterÖzet (hash) değerleri, renk kodları

Base64 Nerelerde Kullanılır?

  • E-posta ekleri: MIME standardı ikili dosyaları Base64 ile metne çevirerek iletir.
  • Data URI: Küçük simgeleri data:image/png;base64,... biçiminde HTML veya CSS içine gömebilirsiniz.
  • HTTP Basic Authentication: kullanıcı:parola çifti Base64'e çevrilip Authorization başlığına yazılır. Örneğin user:pass dizesi dXNlcjpwYXNz olur.
  • JSON ve XML: İkili veriyi metin tabanlı API'lerde taşımak için kullanılır.
  • JWT: Token parçaları Base64URL biçiminde kodlanır.

Sık Yapılan Hatalar ve Dikkat Edilecekler

  • Base64'ü şifreleme sanmak: Kodlama geri döndürülebilir ve anahtar gerektirmez. Parola veya kişisel veriyi Base64'e çevirmek onu korumaz; gerçek koruma için AES gibi şifreleme algoritmaları ve güçlü anahtarlar gerekir. Güçlü bir parola oluşturmak için şifre üretici aracımızı kullanabilirsiniz.
  • Karakter kodlamasını unutmak: JavaScript'in btoa() fonksiyonu yalnızca Latin1 karakterleri kabul eder. Türkçe harfler için önce UTF-8'e çevirmek gerekir; bu araç bunu sizin yerinize yapar.
  • Doldurma karakterini silmek: Bazı sistemler = işaretini kabul etmez, bazıları ise zorunlu tutar. Çözme hatası alıyorsanız uzunluğun 4'ün katı olup olmadığını kontrol edin.
  • Satır sonlarını görmezden gelmek: MIME biçimi 76 karakterde bir satır sonu ekler. Bu boşlukların çözmeden önce temizlenmesi gerekebilir.
  • Standart ile URL-güvenli sürümü karıştırmak: + ve / karakterleri URL içinde sorun çıkarır; JWT gibi yerlerde - ve _ kullanılır.
  • Büyük dosyalar için kullanmak: %33'lük şişme nedeniyle büyük görselleri Data URI olarak gömmek sayfayı yavaşlatır.

Gizlilik notu: Dönüştürme işlemi tarayıcınızda gerçekleşir; girdiğiniz metin sunucuya gönderilmez.

Birlikte Kullanabileceğiniz Araçlar

Metin üzerinde çalışırken kelime sayacı ile uzunluk kontrolü yapabilir, renk dönüştürücü ile HEX ve RGB değerlerini çevirebilir, tarih damgaları için Unix timestamp dönüştürücüyü kullanabilirsiniz. Standardın ayrıntıları için RFC 4648 belgesine bakabilirsiniz.

Sıkça Sorulan Sorular

Base64 nedir?+

Base64, ikili verileri 64 farklı ASCII karakteri kullanarak metin biçiminde temsil eden bir kodlama yöntemidir. E-posta ekleri, Data URI ve API iletişiminde yaygın olarak kullanılır.

Base64 şifreleme midir?+

Hayır. Base64 yalnızca veriyi farklı bir biçimde gösterir ve anahtar gerektirmeden geri çözülebilir. Hassas veriler için AES gibi gerçek şifreleme algoritmaları kullanılmalıdır.

Base64 veriyi ne kadar büyütür?+

Yaklaşık %33 oranında. 3 bayt veri 4 karakter olarak kodlandığı için çıktı uzunluğu 4 × yukarı yuvarla(bayt sayısı ÷ 3) formülüyle bulunur.

Sonda görünen = işareti ne anlama gelir?+

Doldurma (padding) karakteridir. Girdi 3 baytın katı değilse son bloğu tamamlamak için bir veya iki tane = eklenir. Örneğin "Merhaba" kelimesi TWVyaGFiYQ== olarak kodlanır.

Türkçe karakterler Base64'te bozulur mu?+

Metin önce UTF-8 ile kodlanırsa bozulmaz. Bu araç UTF-8 desteklidir; ş, ğ, ı, ö, ü, ç ve İ harfleri doğru biçimde kodlanıp çözülür.

Base64 ile Base64URL arasındaki fark nedir?+

Standart Base64 + ve / karakterlerini kullanır. Base64URL ise URL ve dosya adlarında sorun çıkmaması için bunların yerine - ve _ kullanır; JWT token'ları bu biçimdedir.

Geçersiz Base64 hatası neden alırım?+

Dizede alfabe dışı karakter, eksik doldurma ya da 4'ün katı olmayan uzunluk olabilir. Fazladan boşluk veya satır sonu bırakmadığınızdan ve doğru türü (standart veya URL-güvenli) kullandığınızdan emin olun.