Base58 Kodlayıcı ve Çözücü

Adım 1 / 333%

Girdi


            

Base58, kolay karıştırılan bazı karakterleri kullanmamak için tasarlanmış bir ikiliden metne kodlamadır. Bitcoin alfabesinde 0 O I l ile + / bulunmaz; başka sistemler aynı 58 simgeyi farklı sıraya dizer. Eski Bitcoin Base58Check adresleri ve IPFS CIDv0 dizeleri bilinen örneklerdir. Yalnızca tarayıcıda çalışan bu araç UTF-8 metnini veya kesin onaltılık baytları Bitcoin, Ripple ya da Flickr alfabesiyle dönüştürür ve seçilen alfabede bulunmayan karakterleri reddeder.

Base58 nasıl kodlanır ve çözülür

  1. 1

    Baytları veya Base58 dizesini girin

    Kodlama yönü onaltılık veya ham metin kabul eder; çözme yönü Base58 kabul eder.

  2. 2

    Gerekirse alfabeyi seçin

    Varsayılan Bitcoin Base58'idir; uyumluluk için Ripple ve Flickr varyantları vardır.

  3. 3

    Dönüşümü çalıştırın

    Base58 düzgün 5 veya 6 bitlik gruplara bölünmez; tek bir büyük-uçlu (big-endian) tam sayı olarak ele alınır ve tekrar tekrar 58'e bölünür.

  4. 4

    Sonucu kopyalayın

    Kodlanmış dizeler, baştaki sıfır baytlarını, Bitcoin alfabesindeki sıfır glifi olan baştaki `1` karakterleri olarak korur.

Bitcoin Base58 alfabesi

123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz

Eksik olanlara dikkat edin: 0, O, I, l. Alfabedeki ilk karakter 1’dir ve 0 tam sayısını temsil eder.

Gerçekte nasıl çalışır

Base64 sabit bit gruplarıyla çalışırken Base58 tüm bayt dizesini tek bir büyük-uçlu (big-endian) tam sayı N olarak ele alır ve 58 tabanında ifade eder:

result = []
while N > 0:
    result.prepend(alphabet[N mod 58])
    N = N / 58
for each leading zero byte in input:
    result.prepend(alphabet[0])  # i.e. '1'

Bu yüzden Base58 kodlamasını akış halinde işlemek kolay değildir; herhangi bir karakter üretebilmeden önce tüm sayıya ihtiyaç duyarsınız.

Base58 ve Base58Check

Eski bir P2PKH adresinin tipik Base58Check yükü 25 bayttır: 1 sürüm baytı, 20 özet baytı ve 4 sağlama toplamı baytı. Sağlama toplamı, sürüm ile özetin iki kez SHA-256 işleminden geçirilmiş değerinin ilk 4 baytıdır. Tam yük Base58 ile kodlandığında bilinen adres dizesi oluşur.

Bu araç yalnızca düz Base58 dönüştürür. Bir adresin sürümünü ve sağlama toplamını denetlemek için özel bir Base58Check doğrulayıcısı kullanın.

Alfabe varyantları

Varyant Nerede kullanılır Bitcoin’e göre farklar
Bitcoin BTC adresleri, IPFS CIDv0 Temel
Ripple XRP adresleri Konumlar değiştirilmiş
Flickr Kısa fotoğraf URL’leri Küçük harf büyük harften önce

Neden doğrudan Base64 kullanmayalım?

Base64 ikili ve kodlanmış metin arasında uzunluk açısından verimlidir (3 bayt başına 4 karakter). Base58’in biraz değişken ek yükü vardır, ama belirsiz karakter içermez; birinin adresi elle kopyalaması veya telefonda okuması gerektiğinde istediğiniz şey budur.

Sık Sorulan Sorular

Evrensel olarak değil. Dizeyi insanlar elle işlediğinde Base58 daha iyidir; makineler taşıdığında Base64 daha iyidir. Base64 karakter başına 6 bit, Base58 yaklaşık 5,86 bit kodlar; bu yüzden Base64 biraz daha kompakttır.

Base58 büyük bir tam sayıyı kodlar; bu yüzden yüksek bitlere bağlı olarak uzunluk bir-iki karakter değişir. Tipik P2PKH adresleri 34 karakterdir, ama 33 mümkündür.

Araç dizeyi ham baytlara çözebilir; her baytı kayıpsız görmek için onaltılık çıktıyı seçin. Sürümü veya sağlama toplamını denetlemez, bu yüzden başarılı çözme adresin geçerli olduğunu kanıtlamaz. Bunun için Base58Check doğrulayıcısı kullanın.

Evet. Girdinin başındaki her sıfır bayt çıktıda bir 1 karakterine dönüşür; 1 ile başlayan Bitcoin adresleri böyle çalışır.

İlgili Araçlar