طريقة الاستخدام
- اختر «ترميز» لتحويل النص أو البايتات إلى Z85، أو «فك الترميز» لإعادة Z85 إلى بيانات.
- للمفاتيح والقيم الثنائية الأخرى، اضبط «صيغة المدخلات» على «ست عشري» عند الترميز، أو «صيغة المخرجات» على «ست عشري» عند فك الترميز.
- اكتب المدخلات أو الصقها أو افتح ملفًا. تتحدّث النتيجة فور الكتابة.
- انسخ النتيجة أو نزّلها كملف.
ما هو Z85؟
يُعرَّف Z85 في المواصفة ZeroMQ RFC 32 (وهي مواصفة من مجتمع ZeroMQ، وليست RFC صادرًا عن IETF). وكغيره من ترميزات Base85، يحوّل كل 4 بايتات إلى 5 أحرف، إذ يقرأ كل مجموعة على أنها عدد من 32 بت بترتيب big-endian ويكتبها على هيئة 5 أرقام بالأساس 85، بدءًا بالرقم الأعلى قيمة. وتزيد المخرجات على المدخلات بنسبة 25%.
ما يميّز Z85 هو أبجديته: 0-9 وa-z وA-Z والرموز الـ 23 .-:+=^!/*?&<>()[]{}@%$#. وهي تستبعد علامتي الاقتباس والشرطة المائلة العكسية وعلامة الاقتباس الخلفية والفاصلة والفاصلة المنقوطة والخط العمودي وعلامة التيلدا والشرطة السفلية. صُمّمت الأبجدية لتكون آمنة داخل السلاسل النصية في الشيفرة المصدرية، لذا يمكن لصق قيمة Z85 بين علامتي اقتباس في C أو Python أو JSON دون أي تهريب.
أين يُستخدم Z85
تستخدم ZeroMQ ترميز Z85 لعرض مفاتيح CurveZMQ. فالمفتاح العام أو السري المكوّن من 32 بايت يصبح سلسلة Z85 من 40 حرفًا، وهي الصيغة التي تُرجعها zmq_curve_keypair() وتقبلها خيارات المقابس الخاصة بأمان CURVE. كما توفّر المكتبة الدالتين zmq_z85_encode() وzmq_z85_decode()، وتوفّر الارتباطات البرمجية مثل pyzmq الدوال نفسها.
// C (libzmq)
char text[41]; // 32 bytes -> 40 chars + NUL
zmq_z85_encode(text, key, 32);
# Python (pyzmq)
from zmq.utils import z85
z85.encode(bytes.fromhex('864fd26fb559f75b')) # b'HelloWorld'
السطر الأخير هو متجه الاختبار الوارد في المواصفة.
طول المدخلات: ملاحظة حول هذه الأداة
يشترط RFC 32 أن يكون طول المدخلات الثنائية من مضاعفات 4 بايتات، وطول السلسلة المرمّزة من مضاعفات 5 أحرف. ولا يعرّف أي حشو، وترفض التطبيقات الصارمة مثل zmq_z85_encode() الأطوال الأخرى.
تقبل هذه الأداة الأطوال الأخرى أيضًا، مستخدمةً القاعدة نفسها المتبعة في Ascii85 وBase85: تصبح المجموعة الأخيرة المكوّنة من n بايت n + 1 حرف. وهذا امتداد غير قياسي، وقد ترفض أدوات فك ترميز Z85 الأخرى المخرجات الناتجة بهذه الطريقة، لذا احشُ بياناتك حتى يصبح طولها من مضاعفات 4 بايتات عندما تحتاج إلى التوافق. ومفاتيح CurveZMQ طولها 32 بايت، فهي تستوفي ذلك دائمًا.
المواصفات
| الأبجدية | 0-9 a-z A-Z .-:+=^!/*?&<>()[]{}@%$# |
|---|---|
| حجم المخرجات | 5 أحرف لكل 4 بايتات (125%) |
| الحشو | لا يوجد |
| المعيار | ZeroMQ RFC 32 |
| حساس لحالة الأحرف | نعم |
أمثلة
| المدخلات (UTF-8) | المخرجات |
|---|---|
Hello, World! | nm=QNz.92jz/PV8aP |
Base64.is | lsB}Dhz^42A@ |
你好 | <H}kFRm= |
الأسئلة الشائعة
ما الفرق بين Z85 وAscii85؟
! إلى u، الذي يتضمن علامات الاقتباس والشرطة المائلة العكسية، وفيه اختصار z للبايتات الصفرية. أما Z85 فيتجنب الأحرف التي تحتاج إلى تهريب داخل السلاسل النصية، وليس فيه أي اختصار.هل يستخدم Z85 الحشو؟
لا. لا تسمح المواصفة إلا بأطوال مدخلات من مضاعفات 4 بايتات. وترمّز هذه الأداة الأطوال الأخرى بمجموعة أخيرة أقصر، وهذا ليس جزءًا من المعيار.
هل يمكنني استخدام Z85 في JSON أو XML أو عناوين URL؟
ما طول مفتاح CurveZMQ المرمّز بـ Z85؟
يتكوّن مفتاح CurveZMQ من 32 بايت، لذا يُرمَّز إلى 40 حرفًا بالضبط. ولرؤية المفتاح الخام، فك ترميزه هنا مع اختيار «ست عشري» في «صيغة المخرجات».