طريقة الاستخدام
- اختر الصيغة، ثم اختر ترميز أو فكّ الترميز تحت الوضع.
- اكتب النص في النص. تظهر النتيجة أثناء الكتابة.
- اقرأ الفحص. إذا قال إن النص غير صالح فأصلح الحروف التي يذكرها، وإذا كان صالحاً فانسخ النتيجة.
الصيغ الخمس
تكتب كل صيغة البيانات الثنائية بمجموعة ثابتة من الحروف القابلة للطباعة. وتختلف الصيغ في عدد الحروف التي تستعملها، وفي مقدار زيادة الناتج على المدخل.
- Base32 (RFC 4648، القسم 6) يستعمل الحروف من A إلى Z والأرقام من 2 إلى 7. تدخل خمس خانات في كل حرف، فتحمل ثمانية حروف خمسة بايتات، ويُكمَل النص بعلامات = حتى يصير مضاعفاً للثمانية.
- Base32hex (RFC 4648، القسم 7) يستعمل الأرقام من 0 إلى 9 والحروف من A إلى V. ويحفظ ترتيب البيانات، وهذا ما لا تفعله Base32.
- Base58 يستعمل أبجدية Bitcoin، التي تستبعد 0 وO وI وl كي لا تختلط الحروف المتشابهة. يصبح كل بايت صفري في البداية الرقم 1، ولا يوجد حشو.
- Ascii85 يكتب أربعة بايتات بخمسة حروف من ! إلى u، أي أطول من البيانات بنحو الربع. وتُكتب أربعة بايتات صفرية بالحرف z.
- Z85 نسخة من Ascii85 صُممت للشيفرة المصدرية: تصبح أربعة بايتات خمسة حروف من أبجدية من 85 حرفاً، آمنة داخل النصوص. ويجب أن تكون بياناته مضاعفاً للأربعة.
النص والبايتات
يُرمَّز النص إلى بايتات UTF-8 الخاصة به (RFC 3629)، فالحرف مثل é يأخذ بايتين، والرمز التعبيري يأخذ أربعة. وعند فكّ الترميز تُعاد البايتات نصاً. فإذا لم تكن البايتات المفكوكة صالحة بترميز UTF-8، كملف أو مفتاح، تعرضها الصفحة بالنظام السداسي عشر بدلاً منه، فلا يضيع أي بايت.
ما يقبله فكّ الترميز وما يرفضه
يقول القسم 3.3 من RFC 4648 إن من يفكّ الترميز يجب أن يرفض الحروف الخارجة عن أبجديته، وتفعل الصفحة ذلك، فلا تقبل Base32 حروفاً صغيرة. وتتجاهل المسافات وفواصل الأسطر لأنها تأتي من النسخ واللصق. والحشو في Base32 اختياري. وترفض الصفحة كذلك نص Base32 الذي تكون بتات الحشو في آخر حرف فيه غير صفرية، وهو ما يسمح به القسم 3.5 لمن يفكّ الترميز.
مثال محلول: foobar بصيغة Base32
النص foobar ستة بايتات. تكتبه Base32 في 16 حرفاً هي MZXW6YTBOI مع ست علامات =، وهي القيمة التي يعطيها RFC 4648 في القسم 10 للدالة BASE32(”foobar“).
يعرض الجدول أدناه ما تعرضه الصفحة للنص foobar بصيغة Base32 عندما يكون الوضع ترميزاً.
| النتيجة | للنص foobar |
|---|---|
| الفحص | رُمِّز بصيغة Base32. |
| النتيجة | MZXW6YTBOI====== |
| البايتات | 6 |
| الحروف | 16 |
الأسئلة الشائعة
هل Base32 نوع من التشفير؟
لا. تكتب Base32 البايتات نفسها بأبجدية مختلفة، ويستطيع أي شخص فكّ ترميزها بلا مفتاح، فهي لا تخفي شيئاً، ولا يصح استعمالها لحماية البيانات.
لماذا تستبعد Base58 الأحرف 0 وO وI وl؟
تستبعد أبجدية Bitcoin، التي تستعملها الصفحة، الأحرف التي تتشابه في كثير من الخطوط، فتقل احتمالات قراءة قيمة منسوخة يدوياً قراءة خاطئة. والأبجدية موجودة في الشيفرة المصدرية لبرنامج Bitcoin Core.
لماذا يُرفض نص Z85 الذي أدخلته؟
يُرمّز Z85 أربعة بايتات في كل مرة، فيجب أن تكون البيانات مضاعفاً للأربعة. وعند فكّ الترميز يجب أن يكون النص مضاعفاً لخمسة حروف، وأن يكون كل حرف من أبجدية Z85. وغالباً ما يكون السبب حرفاً ناقصاً أو زائداً.
لماذا أرى النظام السداسي عشر بدلاً من النص؟
لأن البايتات المفكوكة ليست نص UTF-8 صالحاً. وعرضها نصاً يفقد بعض البايتات أو يغيّرها، لذلك تعرض الصفحة كل بايت بالنظام السداسي عشر.
هل Ascii85 هو نفسه Base85؟
Ascii85 نسخة من الأساس 85، بالأحرف من ! إلى u وبالاختصار z. وZ85 أساس 85 آخر مشتق من Ascii85، بأبجدية مختلفة آمنة داخل الشيفرة المصدرية.
هل يُرسل نصي إلى مكان آخر؟
لا. يعمل الترميز وفكّه داخل متصفحك، ولا يُرسل ما تكتبه إلى خادمنا، ولا يُخزَّن هناك.
المصادر
- RFC 4648: The Base16, Base32, and Base64 Data Encodings (باللغة الإنجليزية)
- RFC 3629: UTF-8، صيغة تحويل من ISO 10646 (باللغة الإنجليزية)
- Z85: ZeroMQ RFC 32، ترميز Z85 (باللغة الإنجليزية)
- Bitcoin Core، src/base58.cpp، أبجدية Base58 (باللغة الإنجليزية)
- ويكيبيديا (باللغة الإنجليزية): Ascii85
آخر مراجعة للأرقام والنص: الثلاثاء، 30 جمادى الأولى 1448 بعد الهجرة.