Metin ve Dosyaları Base64 ile Kodlama

Metni, ham baytları veya herhangi bir dosyayı Base64 biçimine dönüştürün. Alıcının beklediği karakter kümesini seçin, = dolgusunu koruyun ya da kaldırın ve MIME ile PEM için satırları 76 veya 64 karakterde bölün.

Tamamen tarayıcınızda çalışır. Hiçbir veri yüklenmez.

Nasıl kullanılır

  1. Kodlanacak metni yazın veya yapıştırın. Ham baytları kodlamak için girdi biçimini "Onaltılık" olarak değiştirin ya da bir dosyayı kodlamak için "Dosya aç" düğmesine tıklayın.
  2. Alıcı sistem başka bir karakter kümesi beklemiyorsa "Metin kodlaması" ayarını UTF-8 olarak bırakın.
  3. Seçenekleri belirleyin: çoğu kullanım için "Standart" varyantı koruyun, alıcı dolgu istemiyorsa "Dolgu" seçeneğini kapatın ve gerektiğinde "Satır kaydırma" ile satırları 76 (MIME) veya 64 (PEM) karakterde bölün.
  4. Base64 çıktısını kopyalayın veya dosya olarak indirin.

Base64 kodlama nasıl çalışır?

Kodlayıcı girdiyi her seferinde üç bayt olarak okur. Bu 24 bit, 6 bitlik dört gruba ayrılır ve 6 bitlik her değer (0 ile 63 arası) bir karakter seçer: 0-25 için A-Z, 26-51 için a-z, 52-61 için 0-9, ardından + ve /. Üç bayt girer, dört karakter çıkar; Base64 çıktısının orijinal veriden yaklaşık %33 daha büyük olmasının nedeni budur.

Text     M        a        n
Bytes    77       97       110
Bits     01001101 01100001 01101110
6-bit    010011 010110 000101 101110
Index    19     22     5      46
Base64   T      W      F      u

Dolgu ve çıktı uzunluğu

Girdi uzunluğu üçün katı değilse son grup eksik kalır. Artan tek bayt iki karaktere dönüşür ve ardından == gelir; artan iki bayt ise üç karakter ve bir = olur. Bu nedenle n baytlık bir girdi için dolgulu çıktı her zaman 4 × ceil(n / 3) karakter uzunluğundadır.

Dolgu herhangi bir veri taşımaz. JSON Web Token, URL parametreleri ve birçok API dolguyu kullanmaz; bu yüzden alıcı taraf dolgusuz çıktı bekliyorsa dolguyu kapatın. Bağlantılar ve dosya adları için URL güvenli varyantı seçin veya Base64URL sayfasını kullanın; her ikisi de + ve / karakterlerini - ve _ ile değiştirir.

MIME ve PEM için satır kaydırma

Varsayılan olarak çıktı tek ve uzun bir satırdır; JSON, data URI ve HTTP başlıkları için gereken de budur. İki biçim ise satır sonları bekler:

  • MIME, 76 karakter. Content-Transfer-Encoding: base64 ile gönderilen e-posta eklerinde satırlar 76 karakterden uzun olamaz (RFC 2045). Bu seçenek, MIME standardının gerektirdiği gibi satırları CRLF ile sonlandırır.
  • PEM, 64 karakter. -----BEGIN ve -----END satırları arasındaki sertifikalar ve anahtarlar 64 karakterlik satırlar kullanır (RFC 7468). Bu seçenek LF satır sonları kullanır.

Karakter kümeleri ve dosyalar

Base64 harfleri değil baytları kodlar; bu nedenle metin önce bir karakter kümesiyle baytlara dönüştürülür. é harfi UTF-8'de iki bayt, ISO-8859-1 veya Windows-1252'de ise tek bayttır; dolayısıyla aynı metin farklı Base64 çıktıları üretir. Web, JSON ve neredeyse tüm modern API'ler için doğru seçim UTF-8'dir; GBK, Shift_JIS, Windows-1251 veya başka bir karakter kümesini yalnızca eski bir sistemle uyum sağlamak için seçin.

Dosyalar, karakter kümesi dönüşümü yapılmadan, saklandıkları hâliyle kodlanır. Hazır HTML ve CSS parçacıkları sunan görsel dönüştürme için Görselden Base64'e aracına bakın; algılanan MIME türüyle bir data URI oluşturmak için Dosyadan Base64'e aracını kullanın.

Teknik özellikler

AlfabeA-Z a-z 0-9 + /
Çıktı boyutu3 bayt başına 4 karakter (yaklaşık %133)
Dolgu= ile 4 karakterin katına tamamlanır
StandartRFC 4648, bölüm 4
Büyük/küçük harf duyarlıEvet

Örnekler

Girdi (UTF-8)Çıktı
Hello, World!SGVsbG8sIFdvcmxkIQ==
Base64.isQmFzZTY0Lmlz
你好5L2g5aW9

Sıkça sorulan sorular

Base64 çıktım neden başka bir kodlayıcının çıktısından farklı?
Neredeyse her zaman girdi baytları farklı olduğu için. Tipik nedenler şunlardır: sondaki bir satır sonu (kabuk komutu echo bir tane ekler; bunun yerine printf '%s' veya echo -n kullanın), farklı bir karakter kümesi, metindeki Windows satır sonları ya da farklı dolgu, alfabe veya satır kaydırma ayarları. Aynı baytlar aynı seçeneklerle her zaman aynı çıktıyı verir.
JavaScript'te Unicode metni Base64 ile nasıl kodlarım?
btoa() yalnızca U+00FF değerine kadar olan karakterleri kabul eder ve diğer tüm karakterlerde hata fırlatır. Önce dizeyi UTF-8 baytlarına dönüştürün, örneğin btoa(String.fromCharCode(...new TextEncoder().encode(str))). Node.js ortamında Buffer.from(str, 'utf8').toString('base64') kullanın.
Komut satırında Base64 kodlamayı nasıl yaparım?
Linux veya macOS üzerinde printf '%s' 'your text' | base64 komutunu çalıştırın. GNU base64 çıktıyı varsayılan olarak 76 karakterde böler (tek satır için -w 0 ekleyin); openssl base64 ise 64 karakterde böler (-A ekleyin).
Base64 kodlama bir şifreleme yöntemi mi?
Hayır. Base64'ün anahtarı yoktur ve herkes bir Base64 kod çözücü ile onu geri çevirebilir. Amacı bilgiyi gizlemek değil, ikili veriyi yalnızca metin kabul eden kanallardan geçirmektir.
Base64 verileri ne kadar büyütür?

Her 3 bayt, tam bir gruba yuvarlanarak 4 karaktere dönüşür; bu nedenle çıktı yaklaşık %33 daha büyüktür. MIME satır kaydırma her 76 karakter için iki bayt (CRLF) daha ekler.