مشفر ومفكك Base58

خطوة 1 / 333%

الإدخال


            

Base58 ترميز من البيانات الثنائية إلى النص صُمم لتجنب عدد من المحارف سهلة الالتباس. تستبعد أبجدية Bitcoin المحارف 0 O I l وكذلك + /، بينما ترتب أنظمة أخرى الرموز الـ58 نفسها بطريقة مختلفة. من أمثلته المعروفة عناوين Bitcoin القديمة من نوع Base58Check وسلاسل IPFS CIDv0. تحول هذه الأداة داخل المتصفح نص UTF-8 أو بايتات سداسية عشرية دقيقة باستخدام أبجدية Bitcoin أو Ripple أو Flickr، وترفض أي محرف خارج الأبجدية المحددة.

كيفية تشفير Base58 وفك ترميزه

  1. 1

    أدخل بايتات أو سلسلة Base58

    اتجاه التشفير يقبل البيانات الست عشرية أو نصا خاما؛ واتجاه فك الترميز يقبل Base58.

  2. 2

    اختر الأبجدية إذا لزم

    الافتراضي هو Base58 الخاص بـ Bitcoin؛ وتتوفر متغيرات Ripple وFlickr للتوافق.

  3. 3

    شغّل التحويل

    Base58 لا يقسم إلى مجموعات مرتبة من 5 أو 6 بتات؛ بل يعامل كعدد صحيح واحد بترتيب البايت الأكبر أولا، ويقسم على 58 مرارا.

  4. 4

    انسخ النتيجة

    تحافظ السلاسل المشفرة على البايتات الصفرية البادئة كأحرف `1` بادئة (محرف الصفر في أبجدية Bitcoin).

أبجدية Bitcoin Base58

123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz

لاحظ ما هو مفقود: 0، O، I، l. أول محرف في الأبجدية هو 1، ويمثل العدد الصحيح 0.

كيف يعمل فعليا

بخلاف Base64 الذي يقسم البتات في مجموعات ثابتة، يعامل Base58 سلسلة البايتات كلها كعدد صحيح واحد بترتيب البايت الأكبر أولا N ويعبر عنه بالأساس 58:

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'

لهذا يصعب بث ترميز Base58 تدريجيا: تحتاج إلى الرقم كله قبل أن تستطيع إخراج أي محرف.

Base58 مقابل Base58Check

تتكون حمولة Base58Check النموذجية لعنوان P2PKH قديم من 25 بايتا: بايت إصدار واحد و20 بايت تجزئة و4 بايتات للمجموع التحققي. المجموع التحققي هو أول 4 بايتات من تجزئة SHA-256 المزدوجة لبايت الإصدار والتجزئة. ينتج ترميز الحمولة كاملة بـBase58 سلسلة العنوان المعروفة.

تحول هذه الأداة Base58 العادي فقط. استخدم مدقق Base58Check مخصصا عندما تحتاج إلى التحقق من إصدار العنوان ومجموعه التحققي.

متغيرات الأبجدية

المتغير أين يُستخدم الفروقات مقابل Bitcoin
Bitcoin عناوين BTC، IPFS CIDv0 الأساس المرجعي
Ripple عناوين XRP مواضع محارف مُبدَّلة
Flickr روابط صور قصيرة الأحرف الصغيرة قبل الكبيرة

لماذا لا نستخدم Base64 فقط؟

لا يغير Base64 الطول كثيرا بين البيانات الثنائية والنص المشفر (4 محارف لكل 3 بايتات)، وهذا فعال. Base58 لديه زيادة متغيرة قليلا لكنه بلا محارف ملتبسة، وهذا ما تحتاجه عندما يضطر شخص إلى نسخ عنوان يدويا أو قراءته عبر الهاتف.

الأسئلة الشائعة

ليس دائما. Base58 أفضل عندما يتعامل البشر مع السلسلة؛ وBase64 أفضل عندما تنقلها الآلات. Base64 يرمز 6 بتات لكل محرف مقابل نحو 5.86 في Base58، لذلك Base64 أضيق قليلا.

يرمز Base58 عددا صحيحا كبيرا، لذلك يختلف الطول بمحرف أو محرفين حسب البتات العليا. عناوين P2PKH النموذجية 34 محرفا، لكن 33 ممكنة.

يمكن للأداة فك السلسلة إلى بايتات خام؛ اختر الإخراج السداسي العشري لإظهار أي بايتات دون فقدان. لكنها لا تتحقق من الإصدار أو المجموع التحققي، لذلك لا يثبت نجاح الفك صحة العنوان. استخدم مدقق Base58Check لهذا الغرض.

نعم. كل بايت صفري في بداية الإدخال يصبح محرف 1 في الخرج، وهذا ما يجعل عناوين Bitcoin التي تبدأ بـ 1 تعمل.

أدوات ذات صلة