Base64 Doğrulayıcı

Geçerli Base64 olup olmadığını öğrenmek için bir dize yapıştırın. Doğrulayıcı varyantı belirtir, geçersiz karakterleri ve dolgu sorunlarını gösterir ve verinin neye çözüldüğünü söyler.

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

Nasıl kullanılır

  1. Kontrol etmek istediğiniz dizeyi girdi alanına yapıştırın.
  2. Sonucu inceleyin: dizenin geçerli olup olmadığı, algılanan varyant (standart veya URL güvenli) ve çözülmüş boyut gösterilir.
  3. Sorunlar listelenmişse, geçersiz karakterleri, boşluk karakterlerini veya yanlış yerdeki dolguyu bulmak için bildirilen konumları kullanın.
  4. Verinin metin mi yoksa PNG, PDF veya ZIP gibi bir dosya mı olduğunu görmek için algılanan içerik türüne bakın.

Base64'ü geçerli kılan nedir?

  • Alfabe. Yalnızca A-Z, a-z, 0-9 ve iki karakter daha kullanılabilir: standart Base64'te + ve /, Base64URL'de - ve _. Her iki çifti karışık kullanan bir dize genellikle bozulmuştur ya da iki farklı kaynaktan birleştirilmiştir.
  • Dolgu. = işareti yalnızca sonda ve en fazla iki kez bulunabilir. Ortadaki dolgu genellikle kodlanmış iki değerin art arda eklendiği anlamına gelir.
  • Uzunluk. Dolgu varsa uzunluk 4'ün katıdır. Dolgu yoksa 4n + 1 dışındaki her uzunluk geçerlidir: artan tek bir karakter yalnızca 6 bit taşır, bu da bir bayt için yeterli değildir.

Katı kod çözücüler bir kural daha ekler: son karakterin kullanılmayan düşük bitleri sıfır olmalıdır. Birçok kod çözücü bu bitleri yok sayar, ancak Go'nun base64.StdEncoding.Strict() gibi bazıları dizeyi reddeder.

Yaygın hatalar ve çözümleri

SorunTipik nedenÇözüm
Geçersiz karakterDeğerle birlikte kopyalanan tırnaklar, ters eğik çizgiler veya %2B ve %3D kaçışlarıFazla karakterleri kaldırın veya önce URL kodunu çözün
Ortada boşluklarDeğer bir URL veya formdan geçerken + karakterlerinin boşluğa dönüşmesi+ karakterlerini geri koyun veya URL'ler için Base64URL kullanın
4n + 1 uzunlukDeğerin sütun sınırı, günlük satırı veya eksik kopyalama nedeniyle kesilmesiDeğerin tamamını yeniden kopyalayın
Ortada dolguBirleştirilmiş iki Base64 dizesiBölün ve her parçanın kodunu ayrı ayrı çözün
Satır sonlarıMIME veya PEM satır kaydırmasıGenellikle zararsızdır; tek satır gereken yerlerde kaldırın

Geçerli olması anlamlı olduğu anlamına gelmez

Base64'ün başlığı veya sağlama toplamı yoktur; bu nedenle geçerlilik yalnızca bir dizenin çözülebileceğini söyler. Birçok sıradan kelime bu denetimden geçer: herhangi dört harf geçerli bir grup oluşturur. Doğrulayıcının veriyi ayrıca çözüp boyutunu ve içerik türünü bildirmesinin nedeni budur. Okunabilir metin veya PNG, PDF ya da ZIP gibi bilinen bir dosya imzası, dizenin gerçekten Base64 olduğuna dair güçlü bir kanıttır; birkaç rastgele bayt ise değildir. Başka kodlamaları da test etmek için kodlama algılayıcıyı deneyin.

Kodda Base64 doğrulama

// JavaScript: dolgulu standart Base64 (boş bir dizeyle de eşleşir)
/^(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/

# Python: geçersiz karakterleri atlamak yerine hata fırlat
import base64, binascii
try:
    base64.b64decode(s, validate=True)
except binascii.Error:
    print('invalid')

Sıkça sorulan sorular

Sıradan bir kelime neden geçerli Base64 olarak bildiriliyor?
Çünkü gerçekten geçerlidir. Uygun uzunluktaki alfabe karakterlerinden oluşan her dizi bazı baytlara çözülür; örneğin test kelimesi üç bayta çözülür. Algılanan içerik türünü kontrol edin: sonuç ne okunabilir bir metin ne de bilinen bir dosya türüyse, girdi muhtemelen hiçbir zaman Base64 değildi.
Boşluk veya satır sonu içeren Base64 geçerli midir?

MIME ve PEM, Base64 verisini satırlara böler ve çoğu kod çözücü boşluk karakterlerini atlar. Ancak JSON alanları, HTTP başlıkları, JWT'ler ve data URI'ler kesintisiz tek bir dize bekler. Doğrulayıcı boşluk karakterlerini ayrıca listeler; böylece dizenin kullanılacağı yerde bunun önemli olup olmadığına siz karar verebilirsiniz.

= dolgusu olmayan Base64 geçerli midir?
Çoğu zaman evet. Base64URL normalde dolguyu kullanmaz ve RFC 4648, uzunluk bağlamdan bilindiğinde dolgunun atlanmasına izin verir. Bazı katı kod çözücüler yine de dolgu ister; bir sistem dizeyi reddederse uzunluk 4'ün katı olana kadar = işaretleri ekleyin. 4n + 1 karakterlik dolgusuz dizeler hiçbir zaman geçerli değildir.
JavaScript'te bir dizenin Base64 olup olmadığını nasıl kontrol edebilirim?
Katı dolgulu Base64 için dizeyi, dörder alfabe karakterinden oluşan grupların ardından isteğe bağlı dolguya izin veren bir düzenli ifadeyle test edin. Daha hızlı bir yöntem, atob() fonksiyonunu try/catch içinde çağırmaktır. atob() hatalı girdide InvalidCharacterError fırlatır, ancak boşlukları ve eksik dolguyu sessizce kabul eder ve URL güvenli karakterleri kabul etmez.