أداة ترميز Base58 وفك ترميزه

حوّل النصوص أو البايتات الست عشرية أو الملفات الصغيرة إلى Base58 وبالعكس. اختر أبجدية Bitcoin أو Flickr أو Ripple، ويمكنك أيضًا إضافة مجموع اختباري Base58Check أو التحقق منه.

تعمل بالكامل داخل متصفحك، ولا يُرفع أي شيء.

طريقة الاستخدام

  1. اختر «ترميز» لتحويل النص أو البايتات إلى Base58، أو «فك الترميز» لإعادة سلسلة Base58 إلى بيانات.
  2. حدّد «الأبجدية». أبجدية Bitcoin هي الافتراضية، وهي أيضًا الأبجدية التي تستخدمها IPFS وSolana.
  3. اكتب المدخلات أو الصقها. غيّر «صيغة المدخلات» إلى «ست عشري» إذا كانت لديك بايتات خام مثل تجزئة أو مفتاح عام.
  4. لا تفعّل «مجموع اختباري Base58Check» إلا إذا كانت السلسلة تحمل مجموعًا اختباريًا من 4 بايتات، ثم انسخ النتيجة أو نزّلها.

ما هو Base58؟

Base58 ترميز لتحويل البيانات الثنائية إلى نص، أُنشئ من أجل Bitcoin. تتكوّن أبجديته من الأرقام والأحرف اللاتينية البالغ عددها 62، بعد استبعاد أربعة أحرف يسهل الخلط بينها: 0 (الصفر) وO (حرف o الكبير) وI (حرف i الكبير) وl (حرف L الصغير). كما أنها لا تحتوي على + أو / أو =، لذا يمكن تحديد سلسلة Base58 بنقرة مزدوجة ووضعها في عنوان URL دون تهريب.

وعلى خلاف Base64، لا يقسّم Base58 المدخلات إلى مجموعات من البتات، بل يعامل المدخلات كلها على أنها عدد واحد كبير ويكتبه بالأساس 58. ولهذا لا يوجد حشو، وقد يؤدي تغيير بايت واحد إلى تغيير كثير من أحرف المخرجات. وليس لبايتات الصفر البادئة أي قيمة عددية، لذا يُكتب كل منها على هيئة الحرف الأول من الأبجدية (1 في أبجدية Bitcoin) للحفاظ عليه. ويبلغ حجم المخرجات نحو 1.37 ضعف حجم المدخلات.

أين يُستخدم Base58

  • Bitcoin. العناوين القديمة (legacy) والمفاتيح الخاصة بصيغة WIF مرمّزة بـ Base58Check، أي Base58 مع بايت إصدار ومجموع اختباري.
  • IPFS. معرّف المحتوى من الإصدار 0 (CIDv0) هو صيغة Base58 لتجزئة multihash من نوع SHA-256، ولهذا يبلغ طول هذه المعرّفات 46 حرفًا وتبدأ بـ Qm.
  • Solana. تُكتب المفاتيح العامة وعناوين الحسابات وتوقيعات المعاملات بـ Base58 العادي دون مجموع اختباري. ويصبح المفتاح المكوّن من 32 بايت عادةً 43 أو 44 حرفًا.
  • Flickr وXRP Ledger. تستخدم الروابط المختصرة في Flickr أبجدية Flickr، وتستخدم عناوين XRP أبجدية Ripple، ولهذا تبدأ بالحرف r.

للتحويل بين Base58 والبايتات الخام، استخدم تحويل Base58 إلى ست عشري وتحويل الست عشري إلى Base58. وللمعرّفات التي يكفي أن تتكوّن من أحرف وأرقام فقط، قارنه بـ Base62.

أبجديات Base58

الأبجديةالأحرف بالترتيب
Bitcoin123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz
Flickr123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ
Ripplerpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz

تستخدم الأبجديات الثلاث الأحرف الـ 58 نفسها بترتيب مختلف، لذا فإن السلسلة المرمّزة بإحداها تُفك إلى بايتات مختلفة، أو يفشل فك ترميزها، عند استخدام أبجدية أخرى.

Base58 في الشيفرة البرمجية

# Python (pip install base58)
import base58
base58.b58encode(b'hello')      # b'Cn8eVZg'
base58.b58decode('Cn8eVZg')     # b'hello'

// JavaScript (npm install bs58)
import bs58 from 'bs58';
bs58.encode(new TextEncoder().encode('hello'));

المواصفات

الأبجدية1-9 A-Z a-z باستثناء 0 O I l
حجم المخرجاتنحو 137% (تحويل الأعداد الكبيرة)
الحشولا يوجد (تتحول بايتات الصفر البادئة إلى 1)
المعيارBitcoin Base58
حساس لحالة الأحرفنعم

أمثلة

المدخلات (UTF-8)المخرجات
Hello, World!72k1xXWG59fYdzSNoA
Base64.isr1Nm3AS7ZcnN
你好2xuZUfBKa

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

لماذا تتحول بايتات الصفر البادئة إلى 1؟
يحوّل Base58 المدخلات إلى عدد واحد، وبايتات الصفر البادئة لا تغيّر قيمته. وللحفاظ عليها، يُكتب كل بايت صفري بادئ على هيئة الحرف الأول من الأبجدية، وهو 1 في أبجدية Bitcoin. ولهذا تُرمَّز 32 بايتًا صفريًا إلى سلسلة من 32 حرف 1 متتاليًا.
هل Base58 حساس لحالة الأحرف؟

نعم. الأحرف الكبيرة والصغيرة أرقام مختلفة، لذا فإن تغيير حالة حرف واحد يغيّر البايتات الناتجة عن فك الترميز أو يجعل السلسلة غير صالحة.

ما الفرق بين Base58 وBase58Check؟
يُلحق Base58Check مجموعًا اختباريًا من 4 بايتات (بداية تجزئة SHA-256 مزدوجة) قبل الترميز، ما يتيح اكتشاف أخطاء الكتابة. فعّل خيار «مجموع اختباري Base58Check» هنا، أو راجع صفحة Base58Check لمزيد من التفاصيل.
لماذا تقتصر المدخلات على نحو 20 كيلوبايت؟
لأن المدخلات كلها عدد واحد كبير، يزداد مقدار العمل بمربع طولها. صُمّم Base58 للمفاتيح والتجزئات والعناوين، لا للملفات. وللبيانات الكبيرة استخدم Base64 أو Base85.