Base58Check Kodlayıcı ve Kod Çözücü

4 baytlık çift SHA-256 sağlama toplamını ekleyip Base58 ile kodlayın ya da bir Base58Check dizesini çözerek sağlama toplamını doğrulayın, sürüm baytını ve yükü (payload) okuyun.

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

Nasıl kullanılır

  1. Bir Base58Check dizesi oluşturmak için "Kodla", bir dizeyi doğrulayıp baytlarını geri almak için "Kodu çöz" seçeneğini seçin.
  2. Kodlamak için girdi biçimini "Onaltılık" yapın ve önce sürüm baytını, ardından yükü girin; örneğin 00 ve 20 baytlık bir HASH160.
  3. "Base58Check sağlama toplamı" seçeneğini açık bırakın. Sağlama toplamı kodlarken eklenir, kod çözerken doğrulanır.
  4. Kodu çözmek için dizeyi yapıştırın ve çıktı biçimini "Onaltılık" yapın. Sürüm baytını ve yükü, sağlama toplamı çıkarılmış olarak elde edersiniz.

Base58Check nasıl çalışır?

  1. Verinin ne olduğunu belirten bir sürüm baytıyla başlayın; ardından 20 baytlık bir açık anahtar özeti gibi yük gelir.
  2. Bu baytların SHA-256 özetini alın, sonucun SHA-256 özetini yeniden hesaplayın ve ilk 4 baytı sağlama toplamı olarak ayırın.
  3. Sağlama toplamını sona ekleyin ve tümünü Base58 ile kodlayın. Baştaki her 0x00 baytı bir 1 karakterine dönüşür.

Bu araç sağlama toplamını tam olarak girdiğiniz baytlar üzerinden hesaplar. Sürüm baytını sizin yerinize eklemez; bu yüzden onu girdinizin başına yazın. Kod çözerken sağlama toplamını son 4 bayt dışındaki her şey üzerinden yeniden hesaplar. Değerler eşleşirse sürüm baytını ve yükü alırsınız; eşleşmezse sağlama toplamı hatası alırsınız. Rastgele bir yazım hatasının fark edilmeden geçme olasılığı yaklaşık dört milyarda birdir.

Yaygın sürüm baytları

Sürüm baytıVeriKodlanmış dizenin ilk karakteri
0x00Bitcoin P2PKH adresi (20 baytlık HASH160)1
0x05Bitcoin P2SH adresi (20 baytlık betik özeti)3
0x6FBitcoin testnet P2PKH adresim veya n
0x80WIF özel anahtarı (32 bayt; sıkıştırılmış anahtarda ek olarak 0x01)5; sıkıştırılmışsa K / L

bc1 ile başlayan SegWit ve Taproot adresleri Base58Check değil Bech32 kullanır ve burada çözülemez. XRP Ledger adresleri aynı sağlama toplamını Ripple alfabesiyle kullanır: "Alfabe" seçeneğinde Ripple'ı seçin.

Örnek: HASH160'tan adrese

Bitcoin genesis bloğuyla ilişkilendirilen bilinen adres, 00 sürüm baytı ve ardından gelen 20 baytlık bir HASH160 değerinden oluşur. "Base58Check sağlama toplamı" açıkken onaltılık girdi olarak girildiğinde tanıdık adres elde edilir:

Girdi (Onaltılık)  00 62e907b15cbf27d5425399ebf6f0fb50ebb88f18
Çıktı              1A1zP1eP5QGefi2DMPTfTL5SLmv7DivfNa

Kodda ise Python'daki base58 paketi b58encode_check() ve b58decode_check() fonksiyonlarını, npm paketi bs58check ise encode() ve decode() fonksiyonlarını sunar.

Teknik özellikler

Alfabe1-9 A-Z a-z (0 O I l hariç)
Çıktı boyutuYaklaşık %137, artı 4 baytlık sağlama toplamı
DolguYok
StandartBitcoin Base58Check
Büyük/küçük harf duyarlıEvet

Örnekler

Girdi (UTF-8)Çıktı
Hello, World!gTazoqFvnegwaKM8v1B33sR
Base64.is6XgW4KVJr8DBmZEAeJ
你好DrMzxHL43oWHbW

Sıkça sorulan sorular

Kod çözme neden sağlama toplamı hatasıyla başarısız oluyor?
Ya bir karakter yanlış yazılmıştır, ya yanlış alfabe seçilmiştir ya da dize sağlama toplamı içermeyen düz Base58'dir. Solana adresleri ve IPFS CID'leri gibi düz Base58 dizelerinin kodu Base58 sayfasında çözülmelidir.
Araç sürüm baytını benim yerime ekliyor mu?
Hayır. Sağlama toplamı girdiğiniz baytlar üzerinden hesaplanır; bu nedenle sürüm baytı girdinizin bir parçası olmalıdır. Girdi biçimini "Onaltılık" yapın ve önce sürüm baytını yazın; örneğin bir Bitcoin adresi için 00.
Bir WIF özel anahtarının kodunu çözebilir miyim?
Evet. Anahtarı "Kodu çöz" sekmesine yapıştırın ve çıktı olarak "Onaltılık" seçin. 80, 32 baytlık anahtar ve sıkıştırılmış anahtarlarda sondaki 01 görüntülenir. Kod çözme tarayıcınızda yerel olarak yapılır, ancak gerçek özel anahtarları yine de dikkatli kullanın.
bc1 adreslerinin kodunu çözebilir miyim?

Hayır. Yerel (native) SegWit ve Taproot adresleri, kendi sağlama toplamına sahip farklı bir kodlama olan Bech32 veya Bech32m kullanır. Bitcoin'de Base58Check yalnızca 1 veya 3 ile (testnet'te m, n veya 2 ile) başlayan eski tip adreslerde kullanılır.