Base32 / Base58 Dönüştürücü

Yedi şemada metin kodlayın veya kodlanmış dizgileri çözün: RFC 4648 Base32 (A-Z2-7), base32hex (0-9A-V), Crockford Base32, z-base-32, Bitcoin Base58, Flickr Base58 ve Ripple Base58. Dönüştürücünün altında bağımsız bir Base58Check üretici ve doğrulayıcı da vardır (sürüm baytı + çift SHA-256 sağlama toplamı). Metin UTF-8 baytları olarak işlenir. Ayrıca: Base64 | Ascii85 | Hex Metin.
Tüm işlemler tarayıcınızda yerel olarak gerçekleşir — verileriniz hiçbir sunucuya yüklenmez.
Nasıl çalışır: Her karakter UTF-8 baytlarına dönüştürülür, ardından her şema bu baytları kendi yazdırılabilir alfabesine paketler.
Şema:
Nasıl çalışır: Kodlanmış dizgi UTF-8 baytlarına geri çözülür ve metin olarak gösterilir. Boşluklar ve sondaki = dolguları yok sayılır; geçersiz karakterler konumlarıyla bildirilir.
Şema:
Girdide Ctrl+Enter etkin modu çalıştırır.
Kodla veya Çöz seçeneğini seçin, bir şema belirleyin ve işlem düğmesine tıklayın. Tüm işlemler tarayıcınızda kalır.

Base58Check kodlayıcı: Sürüm baytı (hex): Yük (hex):
Base58Check doğrulayıcı: Adres veya dizgi:
Base58Check, Bitcoin adres biçimidir: bir sürüm baytı, yük ve ardından sürüm baytı ile yükün birlikte SHA-256'sının çift uygulanmasından gelen ilk dört bayt. Kodla bu dizgiyi yazar; Doğrula bir tanesini okur ve sağlama toplamı tutmadığında hangi baytın yanlış olduğunu bildirir.
Her şema hakkında:
Base32 (RFC 4648) — klasik büyük-küçük harf duyarsız alfabe A-Z 2-7; 8 bayt 13 karakter artı dolgu olur. HOTP/TOTP sırları, DNSSEC ve dosya sağlama toplamları için yaygın olarak kullanılır. Kapatmadığınız sürece isteğe bağlı = dolgusu eklenir.
Base32 Hex — sözlük sırasında doğal olarak sıralanan genişletilmiş alfabe 0-9 A-V; kodlanmış değer onaltılık benzeri bir tanımlayıcı olarak da kullanıldığında kullanışlıdır.
Base58 (Bitcoin) — 0 O I l + / olmadan Base64; çıktı hiçbir zaman belirsiz karakter içermez. Bitcoin adresleri için kullanılan alfabe budur. Önde gelen sıfır baytlar 1 rakamı olur.
Base58 (Flickr) — Flickr kısa URL alfabesi, büyük-küçük harfe duyarlı ve ters sırada: önce rakamlar, sonra küçük, sonra büyük harfler.
Crockford Base32 — rakamlar ve belirsiz olmayan harfler 0-9 A-Z, I, L, O ve U çıkarılmış. Kod çözme ayrıca I ve L'yi 1, O'yu 0, küçük harfleri ve süs olarak tireleri kabul eder. Sonuna isteğe bağlı bir modulo 37 denetim sembolü eklenebilir.
z-base-32 — RFC 4648 Base32 ile aynı beş bitlik gruplar, alfabe insanların en sık yazdığı karakterlerin en kolay yazılması için yeniden sıralanmış. Dolgu ve denetim sembolü yoktur.
Base58 (Ripple / XRP) — aynı 58 karakterin üçüncü bir sıralaması, XRP Ledger tarafından kullanılır. İlk karakteri r'dir, bu yüzden Ripple adresleri bu harfle başlar.
Base58Check — yükünde dört bayt sağlama toplamı taşıyan bir Base58 dizgisi, böylece yanlış yazılmış bir adres sessizce başka yere para göndermek yerine reddedilebilir. Dönüştürücünün altında bağımsız bir üretici ve doğrulayıcı vardır.
Base32 ve Base58 nedir?

Bunlar tek bir soruya iki yanıttır: metin taşıyan bir kanal bayt taşımaya zorlanır. Base32 ve Base58 şifreleme değildir ve özet almak da değildir — hiçbir şeyi gizlemezler ve hiçbir şeyi kısaltmazlar. Bir bayt dizisini sabit bir okunabilir karakter kümesi kullanarak yeniden yazarlar ve hangi kümenin kullanıldığını bilen herkes onu doğrudan geri çevirebilir. Birini diğerine tercih etmenin tek nedeni, alıcı tarafın karakterlerle ne yaptığıdır.

İki aile bu yeniden yazmayı tamamen farklı yollarla yapar ve aradaki fark bu sayfadaki neredeyse her sürprizi açıklar:

  • Bit paketleme — Base32, Base32 Hex, Crockford Base32, z-base-32. Baytlar sabit gruplara kesilir ve her beş bit bir karaktere dönüşür. Çıktı uzunluğu girdi uzunluğundan öngörülebilir; son, kısmen dolu grup ya dolgu karakterleriyle işaretlenir ya da kısa bırakılır.
  • Büyük sayı dönüşümü — her Base58 tablosu. Tüm bayt dizisi taban 256'da tek bir devasa sayı olarak okunur ve taban 58'de yeniden yazılır. Grup yoktur, dolgu yoktur; uzunluk hiçbir şeye bölünmez ve her önde gelen sıfır baytı bir önde gelen sıfır sembolüne dönüşür.
Veri taşıyan altı bit nereye gider: Base32 karakter başına beş bit harcar, bu yüzden her beş girdi baytı için sekiz karakter gerekir — yaklaşık %60 daha büyük. Base58 karakter başına yaklaşık 5,86 bit harcar, bu yüzden yaklaşık %37 daha büyük olur. Base64 karakter başına altı bit sığdırır ve %33'te kalır. Daha büyük alfabeler daha kısadır ama yüksek sesle okunması daha zordur; her birinin yaptığı takas tam olarak budur.
Bu sayfadaki yedi alfabe

Her alfabe, açıklanmak yerine tam olarak yazdırılır, çünkü aynı ada farklı karakterler yazdıran iki araç, etiket ne derse desin birbiriyle uyuşmaz. RFC 4648 satırları normatiftir; Crockford ve z-base-32 satırları biçimin yazarının yayımladığını izler; üç Base58 satırı standart değil yaygın geleneklerdir, bu yüzden ayrı listelenirler.

Crockford Base32 ve modulo 37 denetim sembolü

Alfabe, hiçbir sembolün başka biri olarak okunamaması için I, L, O ve U'yu çıkarır. Geriye kalanlar girişte büyük-küçük harf duyarsızdır: i ve l 1 rakamı olarak okunur, o 0 rakamı olarak okunur ve tire yalnızca uzun bir dizgiyi okumayı kolaylaştırmak için vardır. Buna ek olarak biçim isteğe bağlı bir denetim sembolü tanımlar: sembol dizgisinin taban 32 sayı olarak okunan değeri, modulo 37 alınarak ve 32 ila 36 değerleri için beş ek sembolle yazılarak elde edilir.

Denetim sembolü, baytlar üzerinden değil sembol dizgisi üzerinden hesaplanır: kodlayıcı son grubu sıfırla genişlettiği için aynı karakterlerin çözülmesi her zaman aynı değere döner. Bu yüzden tablodaki denetim değeri yalnızca kodlanmış sütundan elle yeniden üretilebilir. Ek beş sembol *, ~, $, = ve U'dur ve sırasıyla 32, 33, 34, 35, 36 değerlerine karşılık gelir; bu yüzden bir denetim sembolü her zaman bir rakam veya harf olmayabilir.

z-base-32

z-base-32, RFC 4648 Base32'nin beş bitlik paketlemesini korur ve yalnızca otuz iki karakterin sırasını değiştirir. Sıra, bir kişinin en sık yazmak zorunda kalacağı karakterlerin en kolay yazılan ve karıştırılması en zor olanlar olacak şekilde seçilmiştir. Dolgusu yoktur, bu yüzden okuyucunun bir değerin kaç sembole sahip olması gerektiğini bilmesi gerekir; önce elle okunmak üzere tasarlanmış bir biçimin bedeli budur.

Base58Check: bir sürüm baytı, yük, dört bayt sağlama toplamı

Base58 tek başına, yanlış yazılmış bir dizgiyi doğru olandan ayırt edecek bir yolu yoktur, çünkü elli sekiz karakterinin neredeyse her kombinasyonu geçerli bir sayıdır. Base58Check bunu verileri bir sarmalayıcının içine koyarak çözer: bir sürüm baytı, ardından yük, sonra ilk iki parçaya arka arkaya iki kez uygulanan SHA-256'nın ilk dört baytı. Alan program bu dört baytı yeniden hesaplar ve farklılarsa dizgiyi reddeder. Sürüm baytı, bir cüzdana bir ödeme adresine, bir betik adresine veya bir özel anahtara bakıp bakmadığını söyler.

Dönüştürücünün altındaki üretici, sürüm baytını ve yükü onaltılık olarak alır ve Base58Check dizgisini yazar; doğrulayıcı bir tanesini okur, dört sağlama baytını ayırır, bunları yeniden hesaplar ve bulduğu ile beklediği değeri bildirir. Buradaki yanlış bir sağlama toplamı dizginin yanlış yazıldığı veya değiştirildiği anlamına gelir — asla yükün yanlış olduğu anlamına gelmez, çünkü yük hiçbir zaman yorumlanmaz.

Yaygın yanlış anlamalar
  • "Base64 şifrelemedir." Hayır. Anahtar ve gizli bilgi yoktur; çıktı herkes tarafından tersine çevrilebilir. Base32 ve Base58 aynı konumdadır ve bir değeri üçünün hepsinden geçirmek de bir koruma eklemez.
  • "Bir Base58 dizgisi Bitcoin adresidir." Yalnızca Base58Check sağlama toplamını da geçtiğinde ve alıcı yazılımın tanıdığı bir sürüm baytı taşıdığında. Base58 dizgileri, hiç sağlama toplamı olmayan düz tanımlayıcılar da dahil olmak üzere birçok başka yerde görünür.
  • "Üç Base58 alfabesi birbirinin yerine kullanılabilir." Aynı elli sekiz karakteri üç farklı sırada kullanırlar, bu yüzden aynı baytlar üç farklı dizgi üretir. Bir araca hangisini kullanacağı söylenmelidir ve bu sayfa her zaman hangisini kullandığını söyler.
  • "Dolgu değerin bir parçasıdır." = karakterleri yalnızca son grubu işaretler. Yalnızca dolgularında farklılık gösteren iki Base32 dizgisi aynı baytları tanımlar; bu yüzden kod çözücü dolgusu kesilmiş bir dizgiyi kabul eder.
  • "Herhangi bir karakter çalışır." Her alfabe sabit bir kümedir. Dışarıdan bir karakterin değeri yoktur, bu yüzden kod çözücü tahmin yürütmek yerine durur ve karakteri ve konumunu adlandırır.
Akla gelen sorular

Neden Base32 0-9 yerine 2-7 kullanır? Çünkü RFC 4648 alfabeyi bir alan adının içerebileceği karakterlerin içinde kalacak ve yüksek sesle okunması kolay olacak şekilde seçti. Doğal sıralama daha önemli olduğunda bunun yerine Base32 Hex 0-9 A-V kullanır.

Neden bir Base58 dizgisi bu kadar sık 1 ile başlar? Girdinin her önde gelen sıfır baytı bir önde gelen 1 olur (Bitcoin ve Flickr alfabelerinin ilk karakteri). 0x00 sürüm baytı bir sıfır bayttır, bu yüzden çoğu mainnet Bitcoin adresi tam olarak bir 1 ile başlar.

Örnek düğmesi ne yükler? Ekranda şu anda olan şemaya ve yöne ait örneği, asla sabit bir metni değil. Kodlayıcıya şemanın kendi örneğinin metni verilir — Base32 ve Base32 Hex için RFC 4648 bölüm 10 vektörleri, Crockford'un 12345'i, yukarıda yazdırılan z-base-32 satırları — ve kod çözücüye seçili alfabe için kodlanmış dizgi verilir; örneği her iki yönde de kullanılabilir kılan budur. Üç Base58 satırı bilerek aynı metni taşır, bu yüzden şemayı değiştirip Örnek'e yeniden basmak aynı elli sekiz karakterin üç sıralamasını yan yana gösterir. Crockford denetim sembolü işaretliyse kod çözücüye değer sonunda sembolle verilir; doğrulayıcının birini kabul ettiğini izlemenin tek yolu budur.

Sayfa verilerimi bir yere gönderiyor mu? Hayır. Her dönüşüm bu tarayıcı sekmesinde gerçekleşir ve sayfa hiçbir türde ağ çağrısı içermez. Dosyanın doğrudan diskten açılmasıyla da çalışmasının nedeni budur.

Bir gizli bilgi için hangisini kullanmalıyım? TOTP ve HOTP kimlik doğrulayıcı sırları genellikle RFC 4648 alfabesinde Base32'dir, çünkü sırrın elle yazılması gerekir. Alıcı yazılımınızın istediğini kullanın ve gizlilik için asla kodlamanın kendisine güvenmeyin.