Verileriniz %100 gizlidir -- Base64 tamamen cihazınızda kodlanır ve çözülür.
Base64, ikili verileri 64 ASCII karakteriyle düz metin olarak temsil etmenin bir yoludur: A–Z, a–z, 0–9 ve ayrıca + ile /. Resimler, anahtarlar ve e-posta ekleri gibi ikili verilerin, metin için tasarlanmış sistemler üzerinden güvenle iletilmesini sağlar. Bu bir kodlamadır, şifreleme değil.
Base64, 64 karakterden oluşan sabit bir alfabe kullanır. 0'dan 63'e kadar her değer bu karakterlerden tam olarak birine karşılık gelir; bu sayede herhangi bir 3 bayt ikili veri 4 okunabilir karaktere dönüşür:
| Değerler | Karakterler | |
|---|---|---|
| 0–25 | A–Z | 26 büyük harf |
| 26–51 | a–z | 26 küçük harf |
| 52 –61 | 0–9 | 10 rakam |
| 62–63 | + / | 2 sembol |
"=" işareti tek istisnadır. Bu bir dolgu karakteridir, 64 değerden biri değildir; yalnızca son bloğu tamamlamak için kullanılır.
Bunu büyük ihtimalle daha önce görmüşsünüzdür. Base64, ikili verinin metin içinde yer alması gereken her yerde karşımıza çıkar:
Bu data-URI tekniği şöyle görünür. Uzun dize, görüntünün tamamıdır:
<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHElEQVQI12P4//8/w38GIAXDIBKE0DHxgljNBAAO9TXL0Y4OHwAAAABJRU5ErkJggg==" alt="Red dot" />Erken dönem ağ protokolleri ham baytlar için değil, metin için tasarlanmıştı. ASCII 7 bit ve 128 karakter kullanıyordu; bu İngilizce için yeterliydi ancak ikili veriler için değildi. Bazı sistemler kontrol karakterlerini bozuyor ya da satır sonlarını (LF'yi CR + LF'ye) yeniden yazıyordu; bu da iletim sırasında resimleri ve sesi sessizce bozuyordu.
Base64, her sistemin üzerinde anlaştığı karakterleri kullanarak bu sorunların tamamını aşar. Base16 ve Base32 da aynı işi daha küçük alfabelerle yapar, ancak Base64 güvenli kalırken karakter başına daha fazla veri sıkıştırır. İşte bu yüzden tercih edildi.
Tüm şema, tekrarlanan tek bir fikirdir: 3 bayt (24 bit) alın, bunları dört 6-bitlik gruba yeniden bölün ve her grubu alfabede arayın. İşte "Logto" kelimesinin elle kodlanması.
Adım 1. Her karakteri 8-bitlik ikili karşılığına çevirin:
| Karakter | ASCII kodu | İkili |
|---|---|---|
| L | 76 | 01001100 |
| o | 111 | 01101111 |
| g | 103 | 01100111 |
| t | 116 | 01110100 |
| o | 111 | 01101111 |
Adım 2. İlk üç baytı, "Log"u alın ve aynı 24 biti dört 6-bitlik gruba yeniden bölün:
Adım 3. Her 6-bitlik grubu bir sayı olarak okuyun, ardından o sayıyı alfabede arayın:
| 6-bitlik grup | Değer | Base64 karakteri |
|---|---|---|
| 010011 | 19 | T |
| 000110 | 6 | G |
| 111101 | 61 | 9 |
| 100111 | 39 | n |
"Logto" 5 bayttır, 3'ün katı değildir. Son iki bayt "to", 6 + 6 + 4 biçiminde bölünür. Son 4 biti 6-bitlik grubu doldurmak için sıfırlarla tamamlayın, ardından 4 karakterlik bloğu tamamlamak için bir "=" ekleyin:
Blokları bir araya getirin:
"Logto" → TG9ndG8=Her dil bunu yerleşik olarak sunar. Node.js'te:
const text = 'Logto';
const base64 = Buffer.from(text).toString('base64');
console.log(base64); // TG9ndG8=Bu süreçten üç kural çıkar; bunları akılda tutmakta fayda var:
İkili verinin yalnızca metin alabilen bir kanaldan geçmesi gerektiğinde Base64'e başvurun:
Karşılığında elde ettikleriniz:
Standart Base64, URL'ler, sorgu dizeleri ve dosya adlarının çalışma biçimiyle çakışan üç karaktere dayanır: +, / ve = dolgusu. Normal bir Base64 dizesini bir bağlantıya yapıştırdığınızda sessiz hatalar oluşabilir:
Bunları yüzde kodlamayla işaretleyebilirsiniz (+ → %2B, / → %2F, = → %3D), ancak bu dizeyi şişirir ve yanlışlıkla çift kodlama yapmak kolaydır.
Base64URL (RFC 4648 §5) bu sorunu kaynakta çözer: +'yı -'yle, /'yi _'yla değiştirin ve = dolgusu bırakın. Sonuç, hiçbir şey kaçırmadan doğrudan bir URL'ye, sorgu parametresine veya dosya adına girer. URL'lerde, dosya adlarında ve pek çok web API'sinde kullanıldığını göreceksiniz.
const base64 = 'TG9ndG8=';
const urlSafe = base64.replace(/\+/g, '-').replace(/\//g, '_').replace(/=/g, '');
console.log(urlSafe); // TG9ndG8Base64 bir temsil yöntemidir, bedavadan büyük veri kapasitesi değil. Üç şeyi aklınızda tutun:
Hayır. Herkese açık bir alfabeyle tersine çevrilebilir kodlamadır; bu yüzden herkes anında çözebilir ve sıfır gizlilik sağlar. Hassas verileri şifreleyin.
Base64 her 3 baytı 4 karaktere dönüştürür; dolayısıyla kodlanmış biçim her zaman orijinal baytlardan yaklaşık üçte bir daha büyük olur.
Bunlar çıktıyı 4'ün katı tutmak için kullanılan dolgu karakterleridir. Bir "=", girdinin 2 artık baytı olduğunu; iki "=" ise 1 artık baytı olduğunu gösterir; "=" yoksa uzunluk zaten 3'ün katıdır.
Base64URL, URL ve dosya adı güvenli bir alfabeyle aynı kodlamadır: - ve _ sırasıyla + ve /'nin yerine geçer; = dolgusu genellikle bırakılır. URL'lerde, dosya adlarında ve pek çok web API'sinde yaygın olarak kullanılır.
Her türlü ikili veri: resimler, PDF'ler, anahtarlar, çalıştırılabilir dosyalar. Base64 ham baytlar üzerinde çalışır; dolayısıyla orijinal içerik türü önemli değildir.
Hayır. Kodlama ve kod çözme tamamen tarayıcınızda çalışır. Yapıştırdığınız hiçbir şey yüklenmez veya kaydedilmez.