İlgili bir notta, işte sizin için oluşturduğum gelişigüzel temel dönüştürme için bir temel dönüştürücü. Zevk almak!
https://convert.zamicol.com/
Dolgu Karakterleri nedir?
Dolgu karakterleri uzunluk gereksinimlerini karşılamaya yardımcı olur ve hiçbir anlam taşımaz.
Ondalık Doldurma Örneği:
Tüm dizelerin 8 karakter uzunluğunda rastgele gereksinimi göz önüne alındığında, 640 sayısı, hiçbir anlam taşımadıkları için dolgu karakterleri olarak önceki 0'ları kullanarak bu gereksinimi karşılayabilir, "00000640".
İkili Kodlama
Byte Paradigması: Bayt, fiili standart ölçü birimidir ve herhangi bir kodlama şeması, baytlarla ilgili olmalıdır.
Base256 bu paradigmaya tam olarak uyuyor. Bir bayt, base256'daki bir karaktere eşittir.
Base16 , onaltılık veya onaltılık, her karakter için 4 bit kullanır. Bir bayt, iki base16 karakteri temsil edebilir.
Base64 , base256 ve base16'dan farklı olarak, bayt paradigmasına (ve base32'ye) eşit şekilde uymaz. Tüm base64 karakterler, tam bayttan 2 bit kısa olmak üzere 6 bit olarak temsil edilebilir.
Bayt paradigmasına karşı base64 kodlamasını bir kesir olarak temsil edebiliriz: karakter başına 6 bit , bayt başına 8 bit üzerinde . Azaltılmış bu kesir, 4 karakter üzerinden 3 bayttır.
Her 4 base64 karakter için 3 bayt olan bu oran, base64'ü kodlarken takip etmek istediğimiz kuraldır. Base64 kodlaması, her baytın kendi başına durabildiği base16 ve base256'nın aksine , yalnızca 3 baytlık paketlerle bile ölçüm yapmayı vaat edebilir.
Öyleyse , kodlama, dolgu karakterleri olmadan gayet iyi çalışabilmesine rağmen neden doldurma teşvik ediliyor?
Bir akışın uzunluğu bilinmiyorsa veya bir veri akışının tam olarak ne zaman sona erdiğini bilmek faydalı olabilirse, dolgu kullanın. Dolgu karakterleri, bu fazladan noktaların boş olması gerektiğini ve herhangi bir belirsizliği ortadan kaldıracağını açıkça belirtir. Uzunluk dolguyla bilinmese bile veri akışınızın nerede bittiğini bilirsiniz.
Bir karşı örnek olarak, JOSE gibi bazı standartlar karakterlerin doldurulmasına izin vermez. Bu durumda, eksik bir şey varsa, kriptografik bir imza çalışmaz veya diğer base64 olmayan karakterler eksik olur ("." Gibi). Uzunluk ile ilgili varsayımlar yapılmamasına rağmen, dolguya gerek yoktur çünkü yanlış bir şey varsa, işe yaramaz.
Ve bu tam olarak base64 RFC'nin söylediği şeydir ,
Bazı durumlarda, temel olarak kodlanmış verilerde dolgu ("=") kullanılması gerekli değildir veya kullanılmaz. Genel durumda, taşınan verilerin boyutuyla ilgili varsayımlar yapılamadığında, doğru kodu çözülmüş verileri elde etmek için doldurma gereklidir.
[...]
Taban 64 [...] 'deki doldurma adımı, yanlış bir şekilde uygulanırsa, kodlanmış verilerde önemli olmayan değişikliklere yol açar. Örneğin, girdi 64 temel kodlaması için sadece bir sekizli ise, o zaman ilk sembolün altı bitinin tümü kullanılır, ancak sonraki sembolün sadece ilk iki biti kullanılır. Bu ped bitleri, aşağıdaki doldurma açıklamasında açıklanan uyumlu kodlayıcılar tarafından sıfıra AYARLANMALIDIR. Bu özellik tutmazsa, temel kodlamalı verilerin kanonik temsili yoktur ve birden çok temel kodlamalı dizginin kodu aynı ikili veriye çözülebilir. Bu özellik (ve bu belgede ele alınan diğerleri) geçerli olursa, kanonik bir kodlama garanti edilir.
Dolgu, base64 kodlamasının kodunu hiçbir bit kayıp olmadan çözmemizi sağlar. Dolgu olmadan, artık üç bayt demetinde ölçümün açık bir onayı yoktur. Dolgu olmadan, genellikle yığınınızdaki TCP, sağlama toplamları veya diğer yöntemler gibi ek bilgiler olmadan orijinal kodlamanın tam olarak yeniden üretilmesini garanti edemeyebilirsiniz.
Örnekler
RFC 4648 örnek formu ( http://tools.ietf.org/html/rfc4648#section-8 )
"BASE64" işlevi içindeki her karakter bir bayt (base256) kullanır. Daha sonra bunu base64'e çeviririz.
BASE64("") = "" (No bytes used. 0%3=0.)
BASE64("f") = "Zg==" (One byte used. 1%3=1.)
BASE64("fo") = "Zm8=" (Two bytes. 2%3=2.)
BASE64("foo") = "Zm9v" (Three bytes. 3%3=0.)
BASE64("foob") = "Zm9vYg==" (Four bytes. 4%3=1.)
BASE64("fooba") = "Zm9vYmE=" (Five bytes. 5%3=2.)
BASE64("foobar") = "Zm9vYmFy" (Six bytes. 6%3=0.)
İşte oynayabileceğiniz bir kodlayıcı: http://www.motobit.com/util/base64-decoder-encoder.asp