Base58 Kodlayıcı ve Çözücü
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
Baytları veya Base58 dizesini girin
Kodlama yönü onaltılık veya ham metin kabul eder; çözme yönü Base58 kabul eder.
-
2
Gerekirse alfabeyi seçin
Varsayılan Bitcoin Base58'idir; uyumluluk için Ripple ve Flickr varyantları vardır.
-
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
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
A1Z26 Şifre Kodlayıcı
A1Z26 şifresiyle (A=1, B=2, ... Z=26) metni kodlayın veya sayı dizisini özel ayraçla tekrar harflere çözün.
AES Şifrele / Şifre Çöz
Düşük riskli metni OpenSSL AES şifreleriyle şifreleyin ve çözün. Parola cümlesi SHA-256 ile özetlenir; Base64 çıktı IV artı şifreli metin içerir.
Base85 Kodlayıcı ve Çözücü
Adobe Ascii85 (PostScript/PDF) veya Z85 (ZeroMQ) varyantlarında Base85 kodlayın ve çözün. İkili veri için Base64'ten daha kompakttır.
Atbash Şifre Kodlayıcı
Metni Atbash şifresiyle kodlayın veya çözün; A-Z harflerini Z-A ile eşleyen İbrani kökenli bir yerine koyma şifresidir. Aynı işlem hem şifreler hem çözer.
Base32 Kodlayıcı ve Çözücü
RFC 4648 alfabesini kullanarak Base32 stringlerini kodlayın ve çözün. TOTP secret'ları, büyük/küçük harf duyarsız token'lar ve insanın yazdığı tanımlayıcılar için kullanışlıdır.
bcrypt Hash Oluşturucu
bcrypt hash üretin veya düz metin parolayı mevcut bir bcrypt hash'e karşı doğrulayın. Tek araçta yan yana üretme ve doğrulama.