Base64 Kodlama ve Çözme

RSS

Tam UTF-8 desteği ve URL-safe seçeneğiyle metni Base64'e kodlayın veya Base64'ü yeniden metne çözün.

%100 tarayıcınızda çalışır. Yapıştırdığınız hiçbir şey yüklenmez veya saklanmaz.
Metin veya Base64
Sonuç
Hazır.

Base64 kodlayıcı ve çözücü nasıl kullanılır?

  1. Metni Base64'e dönüştürmek için Kodla, Base64'ü tekrar metne dönüştürmek için Çöz seçeneğini seçin.
  2. Girdinizi yapıştırın. Metin UTF-8 olarak işlenir; bu yüzden Türkçe karakterler gibi aksanlı harfler, Latin dışı alfabeler ve emojiler doğru çalışır.
  3. Sonuç bir URL'ye, dosya adına veya JWT'ye girecekse URL-safe seçeneğini açın.
  4. Çıktıyı kopyalayın.

Kodlama ve çözme yerel olarak tarayıcınızda yapılır; yapıştırdığınız hiçbir şey yüklenmez veya saklanmaz.

Base64 nasıl çalışır?

RFC 4648'de tanımlanan Base64, her türlü ikili veriyi 64 yazdırılabilir ASCII karakteriyle gösterir: A–Z, a–z, 0–9, + ve /. Amacı, ikili içeriğin e-posta, JSON, XML ve HTTP başlıkları gibi metin için tasarlanmış sistemlerden güvenle geçebilmesidir.

Algoritma girdiyi her seferinde 3 bayt (24 bit) olarak alır ve dört adet 6 bitlik gruba böler. Her 6 bitlik değer (0–63) alfabeden bir karakter seçer. Süreci Man kelimesiyle görelim:

AdımDeğer
BaytlarM=77, a=97, n=110
24 bit01001101 01100001 01101110
6 bitlik gruplar010011 010110 000101 101110 = 19, 22, 5, 46
Base64TWFu

Her 3 bayt 4 karaktere dönüştüğü için Base64 çıktısı girdiden yaklaşık %33 daha büyüktür (MIME gibi bir biçim satır sonu ekliyorsa bunlar da eklenir).

= ile dolgu (padding)

Girdi uzunluğu üçün katı değilse son grup doldurulur. Geriye bir bayt kalırsa iki karakter artı ==, iki bayt kalırsa üç karakter artı = üretilir. Örneğin Hi, SGk= olarak kodlanır.

URL-safe Base64

Standart + ve / karakterlerinin URL'lerde ve dosya yollarında özel anlamı vardır. RFC 4648 §5, base64url alfabesini tanımlar; bu alfabe onların yerine - ve _ kullanır. Dolgu çoğu zaman atlanır. JSON Web Token'lar dolgusuz base64url kullanır.

Standard:  +/8=
URL-safe:  -_8

Sık yapılan hatalar

Base64 şifreleme değildir

Base64'ü herkes anında çözebilir; ortada bir anahtar yoktur. Parolaları veya API anahtarlarını "gizlemek" için asla kullanmayın. Bütünlük kontrolleri için hash oluşturucu ile bir hash kullanın, gizlilik için de gerçek şifreleme kullanın.

JavaScript'te UTF-8

Tarayıcının yerleşik btoa() fonksiyonu yalnızca Latin-1 aralığındaki karakterleri kabul eder ve diğer her şey için hata verir. Önce metni UTF-8 baytlarına dönüştürün:

btoa("✓");   // InvalidCharacterError

const bytes = new TextEncoder().encode("✓");
btoa(String.fromCharCode(...bytes));   // "4pyT"

Alfabeleri karıştırmak

base64url verilerini katı bir standart çözücüyle çözmek, - ve _ karakterlerinde veya eksik dolguda başarısız olur. Çözmeden önce alfabeyi dönüştürün ve dolguyu dört karakterin katına tamamlayacak şekilde yeniden ekleyin.

Base64 ile nerede karşılaşırsınız?

  • Data URI'ler, küçük dosyaları doğrudan HTML veya CSS'e gömer: data:image/png;base64,iVBORw0KGgo...
  • HTTP Basic kimlik doğrulaması, username:password bilgisini Base64 ile kodlanmış olarak gönderir. user:pass, Authorization: Basic dXNlcjpwYXNz hâline gelir; bu çok kolay geri çözülebildiği için Basic kimlik doğrulaması yalnızca HTTPS üzerinden kullanılmalıdır. Bu tür başlıkları HTTP başlık kontrolü aracıyla inceleyebilirsiniz.
  • E-posta ekleri (MIME) ile PEM sertifikaları ve anahtarları.
  • Başlığı ve yükü (payload) base64url ile kodlanmış JSON olan JWT'ler. Bunları okumak için JWT çözücüyü kullanın.
İpucu: Komut satırında printf 'text' | base64 kodlar, base64 -d çözer (eski macOS sürümleri -D kullanır). Sondaki satır sonunun da kodlanmaması için printf veya echo -n kullanın.

Sıkça sorulan sorular

Base64 dizem neden = veya == ile bitiyor?

Bu dolgudur. Girdi uzunluğu üçe bölünemediğinde çözücüye son grubun kaç bayt içerdiğini bildirir.

Base64 güvenli mi?

Hayır. Bu bir kodlamadır, şifreleme değildir. Hiçbir gizlilik sağlamaz; yalnızca ikili verilerin metin olarak güvenle taşınmasını sağlar.

Kodlanmış çıktı neden girdiden büyük?

Her Base64 karakteri 8 yerine 6 bit taşır; bu yüzden 3 girdi baytı için 4 çıktı karakteri gerekir. Bu da yaklaşık üçte birlik bir ek yük demektir.

Base64 ile base64url arasındaki fark nedir?

Yalnızca iki karakter farklıdır: base64url, + ve / yerine - ve _ kullanır ve genellikle = dolgusunu atar; böylece sonuç ek bir kaçış işlemine gerek kalmadan URL'lere yerleştirilebilir.

Güncellendi

Panoya kopyalandı