Base32

Base32 هو ترميز ثنائي إلى نصي يعتمد على نظام العد ذي الأساس 32. يستخدم أبجدية من 32 رقمًا ، يمثل كل منها تركيبة مختلفة من 5 بتات (2^ 5 ). نظرًا لأن Base32 ليس شائع الاستخدام، فإن مسألة الترميز، أي اختيار الأحرف لتمثيل الأرقام الـ 32، ليست محسومة كما هو الحال في أنظمة العد الأكثر شيوعًا (مثل النظام الست عشري )، على الرغم من وجود وثائق RFC ومعايير غير رسمية وفعلية. إحدى طرق تمثيل أرقام Base32 بشكل مقروء هي استخدام الأرقام من 0 إلى 9 متبوعة بالأحرف الكبيرة من A إلى V. مع ذلك، تُستخدم العديد من الاختلافات الأخرى في سياقات مختلفة. تاريخيًا، يمكن اعتبار كود بودو كود Base32 معدلًا ( يحتفظ بالحالة ). غالبًا ما يُستخدم Base32 لتمثيل سلاسل البايت.

ترميزات RFC 4648

توثق وثيقة RFC 4648، وهي معيار إنترنت مقترح صدر في أكتوبر 2006 [ 1 ترميزات base16 وbase32 وbase64. تتضمن الوثيقة نظامين لترميز base32، لكنها توصي بأحدهما على الآخر. كما توصي، بغض النظر عن السوابق، بتسمية الأبجدية المحددة في القسم 6 فقط باسم base32، وتسمية الأبجدية الأخرى المشابهة في القسم 7 باسم base32hex. [ أ ] لا يوجد اتفاق عام على هذه التوصيات. يجب توخي الحذر عند استخدام الأنظمة التي تُسمى base32، إذ قد تكون هذه الأنظمة base32 وفقًا للقسم 6 من RFC 4648، أو وفقًا للقسم 7 (مع تجاهل ربما لإلغاء RFC للاسم الأبسط للاسم الأخير)، أو قد تكون نوعًا آخر من الترميز، كما هو موضح أدناه. 

ترميز Base 32 وفقًا للمادة 6

يُعرَّف نظام الترميز الأساسي 32 الأكثر استخدامًا في RFC 4648 §6 وفي RFC 3548 (2003) السابق . صُمِّم هذا النظام في الأصل عام 2000 بواسطة جون مايرز لصالح SASL / GSSAPI . [ 2 ] يستخدم هذا النظام أبجدية من A إلى Z ، متبوعة بالأرقام من 2 إلى 7. يتم حذف الرقمين 0 و 1 لتشابههما مع الحرفين O و I (وبالتالي فإن القيمة العشرية للرقم "2" هي 26 ). 

في بعض الحالات، لا يُشترط استخدام الحشو (يمكن استنتاجه من طول السلسلة بعد باقي قسمتها على 8). ينص RFC 4648 على وجوب استخدام الحشو ما لم تنص مواصفات المعيار (بالإشارة إلى RFC) صراحةً على خلاف ذلك. يُعدّ استبعاد الحشو مفيدًا عند استخدام بيانات مُشفّرة بنظام Base32 في رموز عناوين URL أو أسماء الملفات، حيث قد يُشكّل حرف الحشو مشكلة.

الأبجدية RFC 4648 Base32
قيمةرمزقيمةرمزقيمةرمزقيمةرمز
0أ8أنا16سؤال24Y
1ب9ج17R25Z
2ج10ك18S262
3د11ل19تي273
4هـ12م20يو284
5F13شمال21V295
6جي14يا22دبليو306
7ح15P23X317
حشوة=

هذا مثال على تمثيل Base32 باستخدام مجموعة الأحرف الـ 32 الموصوفة سابقًا ( IPFS CIDv1 في ترميز Base32 للأحرف الكبيرة):BAFYBEICZSSCDSBS7FFQZ55ASQDF3SMV6KLCW3GOFSZVWLYARCI47BGF354

ترميز الأساس 32 مع الأبجدية السداسية العشرية الموسعة وفقًا للفقرة 7

"النظام السداسي الممتد" الأساس 32 أو base32hex ، [ 3 ] وهو مخطط آخر للأساس 32 وفقًا لـ RFC 4648 §7 ، يوسع النظام السداسي بطريقة أكثر طبيعية: النصف السفلي منه مطابق للنظام السداسي، وبعد ذلك، يستمر base32hex ببساطة في استخدام الأبجدية حتى الحرف V.

اقترح كريستيان لانكتوت، وهو مبرمج يعمل في شركة Sage Software ، هذا النظام لأول مرة في رسالة إلى مجلة Dr. Dobb's في مارس 1999 [ 4 ] كجزء من حل مقترح لمشكلة عام 2000. وقد أشار إليه لانكتوت باسم "Double Hex". ووُصفت الأبجدية نفسها في عام 2000 في RFC 2938 تحت اسم "Base-32". بينما يُقر RFC 4648 بالاستخدام الحالي لهذا الإصدار في NSEC3 ، فإنه يشير إليه باسم base32hex وينصح بعدم الاكتفاء بالإشارة إليه باسم "base32" فقط. 

بما أن هذه الصيغة تستخدم الأرقام من 0 إلى 9 متبوعة بأحرف متتالية من الأبجدية، فإنها تتطابق مع الأرقام المستخدمة في دالة جافا سكريبت [ 5 ] ودالة البناء في بايثون [ 6 ] عند تحديد أساس أكبر من 10 (مثل 16 أو 32). كما أنها تحتفظ بخاصية النظام الست عشري المتمثلة في الحفاظ على ترتيب فرز البتات للبيانات المُمثلة، على عكس RFC 4648 §6 base32 أو base64. [ 3 ]parseInt()int()

على عكس العديد من أنظمة الترميز الأخرى ذات الأساس 32، فإن الأرقام التي تتجاوز 9 في نظام base32hex متجاورة. ومع ذلك، تتضمن مجموعة أرقامه أحرفًا قد تتعارض بصريًا. مع العديد من الخطوط، من الممكن التمييز بصريًا بين الأحرف المتشابهة مثل (0، O) و(1، I)، ولكن في خطوط أخرى قد يكون ذلك صعبًا، وبالتالي قد تكون غير مناسبة لعرض تسلسلات أحرف base32. هذا صحيح بشكل خاص في نظام ترميز يعبر عن الأرقام فقط، عندما لا يكون السياق الذي توفره اللغة الإنجليزية عادةً موجودًا. [ ب ] لا يتحكم الترميز أو التشفير في اختيار الخط، ومع ذلك لا يحاول نظام base32hex التعويض عن أوجه القصور في الخطوط المتأثرة. [ ج ]

الأبجدية "السداسية الممتدة" ذات الأساس 32
قيمةرمزقيمةرمزقيمةرمزقيمةرمز
008816جي24يا
119917ح25P
2210أ18أنا26سؤال
3311ب19ج27R
4412ج20ك28S
5513د21ل29تي
6614هـ22م30يو
7715F23شمال31V
حشوة=

مخططات ترميز بديلة

بتغيير الأبجدية Base32، فإن جميع المعايير البديلة لها تركيبات مماثلة من الرموز الأبجدية الرقمية.

z-base-32

z-base-32 [ 7 ] هو ترميز Base32 صممه زوكو ويلكوكس-أوهيرن ليكون أسهل استخدامًا وأكثر اختصارًا. يتضمن الأرقام 1 و 8 و 9 ، ولكنه يستثني l و v و 0 و 2 . كما أنه يُبدّل ترتيب الأحرف بحيث تكون الأحرف الأسهل هي الأكثر تكرارًا. يُشفّر z-base-32 سلاسل البتات التي لا يكون طولها من مضاعفات 8 بتات، ويحذف أحرف الحشو الزائدة. استُخدم z-base-32 في مشروع Mnet مفتوح المصدر، ويُستخدم حاليًا في بروتوكول ZRTP الخاص بفيل زيمرمان ، وفي مشروع Tahoe-LAFS مفتوح المصدر.

الأبجدية z-base-32
قيمةرمزقيمةرمزقيمةرمزقيمةرمز
0y8هـ16o24أ
1ب9ج17ت253
2ن10ك181264
3د11م19u275
4ر12ج20w28ح
5و13ص21أنا297
6ز14q22s306
7815x23z319

قاعدة كروكفورد 32

ابتكر دوغلاس كروكفورد تصميمًا بديلًا آخر لنظام Base32 ، يقترح فيه استخدام أحرف إضافية لحساب مجموع التحقق mod-37. [ 8 ] يستثني هذا التصميم الأحرف I وL وO لتجنب الخلط بينها وبين الأرقام، كما يستثني الحرف U لتقليل احتمالية إدخال ألفاظ بذيئة عن طريق الخطأ.

تتوفر مكتبات لترميز البيانات الثنائية في Base32 الخاص بـ Crockford في مجموعة متنوعة من اللغات.

أبجدية كروكفورد ذات الأساس 32
قيمةترميز الرقمفك تشفير الرقمقيمةترميز الرقمفك تشفير الرقم
000 o O16جيجي جي
111 i I l L17حح ح
22218ججي جي
33319كك ك
44420ممم
55521شمالن ن
66622Pص ص
77723سؤالq Q
88824Rr R
99925Ss S
10أأ أ26تيت ت
11بب ب27Vv V
12جنسخة28دبليوw W
13دد د29Xx X
14هـهـ هـ30Yص ص
15Ff F31Zz Z

إلكترولوجيكا

استخدم المبرمجون العاملون على جهاز Electrologica X1 شكلاً سابقاً من نظام الترميز ذي الأساس 32 لتمثيل عناوين الأجهزة. وكانت "الأرقام" تُمثل بأعداد عشرية من 0 إلى 31. على سبيل المثال، يُمثل الرقم 12-16 عنوان الجهاز 400 (= 12 × 32 + 16).

جيوهاش

في خوارزمية Geohash ، يُستخدم تمثيل Base32 مُعدَّل لتمثيل قيم خطوط الطول والعرض في عدد صحيح موجب واحد (مُتداخل البتات). [ 9 ] يستخدم هذا التمثيل جميع الأرقام العشرية (من 0 إلى 9) ومعظم الأحرف الصغيرة، باستثناء الأحرف "a" و"i" و"l" و"o"، كما هو موضح في خريطة الأحرف التالية:

عشري0123456789101112131415
الأساس 320123456789بجدهـوز
 
عشري16171819202122232425262728293031
الأساس 32حجكمنصqرsتuvwxyz

ترميز تورينج

في عام 1950 تقريبًا، [ 10 ] كتب آلان تورينج متطلبات البرمجيات لنظام الحوسبة مانشستر مارك 1. [ 11 ] تتوفر نسخة مكتوبة من دليل تورينج لنظام مارك 1 على موقع archive.org. [ 12 ]

يحتوي موقع أرشيف جامعة مانشستر، الذي يُخلّد ذكرى 60 عامًا من الحوسبة [ 13 ] ، على جدولٍ يُبيّن ترميز الأساس 32 الذي استخدمه تورينج. ويظهر الجدول والشرح المُصاحب له أيضًا في الدليل.

يظهر سرد آخر لهذه الفترة من حياة تورينج في صفحة سيرته الذاتية تحت عنوان " أجهزة الكمبيوتر المبكرة واختبار تورينج" .

ألعاب الفيديو

قبل أن يصبح نظام NVRAM شائعًا، استخدمت العديد من ألعاب الفيديو لمنصات نينتندو نظام الأرقام ذي الأساس 31 لكلمات المرور . تحذف هذه الأنظمة حروف العلة (باستثناء Y) لمنع اللعبة من إدخال كلمة مرور بذيئة عن طريق الخطأ . لذا، تتكون الأحرف عادةً من مجموعة متنوعة قليلاً من الأحرف التالية: 0-9، B، C، D، F، G، H، J، K، L، M، N، P، Q، R، S، T، V، W، X، Y، Z، وبعض علامات الترقيم. ومن الألعاب المعروفة باستخدام هذا النظام: Mario Is Missing!، و Mario's Time Machine ، و Tetris Blast ، و The Lord of the Rings (Super NES) .

أبجدية آمنة للكلمات

الأبجدية Base32 الآمنة للكلمات هي امتداد لأبجدية Open Location Code Base20 . تستخدم هذه الأبجدية 8 أرقام و12 حرفًا حساسًا لحالة الأحرف، تم اختيارها لتجنب تكوين كلمات عن طريق الخطأ. ينتج عن التعامل مع الأبجدية على أنها حساسة لحالة الأحرف مجموعة من 32 رقمًا (8+12+12).

عشري0123456789101112131415
الأساس 3223456789جFجيحجمPسؤال
 
عشري16171819202122232425262728293031
الأساس 32RVدبليوXجوزحجمصqرvwx

مقارنات مع أنظمة أخرى

المزايا

يتمتع نظام Base32 بعدد من المزايا مقارنة بنظام Base64:

  1. تكون مجموعة الأحرف الناتجة كلها من نوع واحد، وهو ما يمكن أن يكون مفيدًا في كثير من الأحيان عند استخدام نظام ملفات غير حساس لحالة الأحرف ، أو أسماء DNS ، أو اللغة المنطوقة، أو الذاكرة البشرية.
  2. يمكن استخدام النتيجة كاسم ملف لأنه لا يمكن أن يحتوي على الرمز '/'، وهو فاصل مسار Unix .
  3. يمكن اختيار الأبجدية لتجنب أزواج الرموز المختلفة المتشابهة، مما يسمح بنسخ السلاسل بدقة يدويًا. (على سبيل المثال، تحذف مجموعة رموز RFC 4648 §6 الأرقام 1 و8 و0، لأنها قد تُخلط مع الأحرف 'I' و'B' و'O'). 
  4. يمكن تضمين نتيجة بدون حشو في عنوان URL دون ترميز أي أحرف.

يتمتع نظام Base32 بمزايا على نظام الست عشري / Base16 :

  1. يستهلك تمثيل Base32 مساحة أقل بنسبة 20%. (يستهلك 1000 بت 200 حرف، مقارنة بـ 250 حرفًا لتمثيل Base16).

بالمقارنة مع التشفيرات القائمة على 8 بت، قد تتمتع أنظمة 5 بت أيضًا بمزايا عند استخدامها لنقل الأحرف:

  1. بفضل الأبجدية الكاملة، يسمح مخطط RFC 4648 §6 Base32 وما شابهه بترميز حرفين إضافيين لكل عدد صحيح 32 بت (ليصبح المجموع 6 بدلاً من 4، مع وجود 2 بت احتياطي)، مما يوفر عرض النطاق الترددي في المجالات المقيدة مثل شبكات الراديو.

العيوب

يستهلك تمثيل Base32 مساحة أكبر بنسبة 20% تقريبًا من Base64 . أيضًا، نظرًا لأنه يُشفّر خمسة بايتات من 8 بت (40 بت) إلى ثمانية أحرف Base32 من 5 بت، بدلًا من ثلاثة بايتات من 8 بت (24 بت) إلى أربعة أحرف Base64 من 6 بت، فإن إضافة حشو حتى حد 8 أحرف تُشكّل عبئًا أكبر على الرسائل القصيرة (وهو ما قد يكون سببًا لحذف الحشو، وهو خيار متاح في RFC 4648 ). 

طول الرموز كنسبة مئوية من البيانات الثنائية
Base64Base32النظام الست عشري
8 بت133%160%200%
7 بت117%140%175%

على الرغم من أن نظام Base32 يشغل مساحة أقل بنسبة 20% تقريبًا من النظام الست عشري ، إلا أنه أقل استخدامًا بكثير. يمكن بسهولة تحويل النظام الست عشري إلى بايتات لأن كل رقمين ست عشريين يمثلان بايتًا واحدًا. أما نظام Base32 فلا يُحوّل إلى بايتات منفردة. مع ذلك، فإن كل رقمين في نظام Base32 يُقابلان عشرة بتات، والتي يمكنها ترميز (32 × 32 =) 1024 قيمة، مع تطبيقات واضحة لوحدات متعددة البايتات من حيث قوى العدد 1024.

يُعد النظام الست عشري أسهل في التعلم والتذكر، لأنه لا يتطلب سوى حفظ القيم العددية لستة رموز إضافية (من A إلى F)، وحتى إذا لم يتم تذكرها على الفور، فمن الأسهل العد من خلال عدد قليل من القيم.

تطبيقات البرمجيات

تُعد برامج Base32 مناسبة لترميز بيانات البايت العشوائية باستخدام مجموعة محدودة من الرموز التي يمكن استخدامها بسهولة من قبل البشر ومعالجتها بواسطة أجهزة الكمبيوتر.

تستخدم تطبيقات Base32 مجموعة رموز تتألف من 32 حرفًا مختلفًا على الأقل (وأحيانًا حرفًا ثالثًا وثلاثين للحشو)، بالإضافة إلى خوارزمية لترميز أي تسلسل من البايتات ذات 8 بتات في أبجدية Base32. ولأن تمثيل كل بايت مُدخل ذي 8 بتات يتطلب أكثر من حرف Base32 واحد ذي 5 بتات، فإذا لم يكن المُدخل من مضاعفات 5 بايتات (40 بتًا)، فلن يتسع تمامًا في أحرف Base32 ذات 5 بتات. في هذه الحالة، تتطلب بعض المواصفات إضافة أحرف حشو، بينما تتطلب أخرى إضافة بتات صفرية لجعله من مضاعفات 5 بتات. في المقابل، يستخدم نظام Base64، ذو الصلة الوثيقة، مجموعة من 64 رمزًا (أو 65 رمزًا عند استخدام الحشو).

تتوفر تطبيقات Base32 بلغات C/C++، [ 14 ] [ 15 ] وPerl، [ 16 ] وJava، [ 17 ] و JavaScript، [ 18 ] وPython، [ 19 ] و Go ، [ 20 ] وRuby . [ 21 ]

انظر أيضاً

  • .onion – نطاق إنترنت عالي المستوى ذو استخدام خاص 
  • Ascii85 – ترميز لتسلسل من قيم البايت باستخدام 85 حرفًا قابلاً للطباعة 
  • Base16 ترميز لتسلسل قيم البايت باستخدام التمثيل الست عشري
  • Base64 – ترميز لسلسلة من قيم البايت باستخدام 64 حرفًا قابلاً للطباعة 
  • Base36 – ترميز لتسلسل من قيم البايت باستخدام 36 حرفًا قابلاً للطباعة 
  • Base58 – تمثيل البيانات الثنائية كنص. صفحات تعرض أوصافًا مختصرة لوجهات إعادة التوجيه. 
  • Geohash – ترميز جغرافي متاح للجميع تم ابتكاره في عام 2008 
  • لغة Ngiti - تستخدم نظامًا رقميًا مكونًا من 32 [ 23 ]

ملحوظات

  1. ولتوضيح السياق، يوثق المعيار المقترح أيضًا ترميزين من نوع base64، ويعرب هنا أيضًا عن تفضيل أحدهما، وإن كان لأسباب مختلفة. ويوثق المعيار ترميزًا واحدًا فقط من نوع base16، وهو ترميز مُعتمد عالميًا منذ فترة طويلة حتى قبل نشر RFC 4648 أو سابقه RFC 3548.
  2. كان التشابه في السابق ميزةً لا عيبًا، إذ سمح للآلات الكاتبة القديمة بحذف مفاتيح إضافية للرقمين 0 و1، مما قلل من التعقيد الميكانيكي. مع ظهور الحواسيب، رُئي من المستحسن أنتتمكن طابعات الحاسوب القديمة من إنتاج نفس نوع الخط الذي تنتجه الآلات الكاتبة عالية الجودة، ولذلك حافظت الخطوط الشبيهة بالآلات الكاتبة على تشابه هذه الأحرف. في عام 2025، لم يعد من الضروري استخدام خطوط لا تميز بعض الأحرف بوضوح، لكن هذا التقليد لا يزال قائمًا. ولا تقتصر هذه المشكلة على الخطوط الشبيهة بالآلات الكاتبة فحسب، بل تشمل أيضًا العديد من الخطوط المؤثرة، مثل خط هيلفيتيكا .
  3. يعتمد تصميم العديد من متغيرات base32 على فكرة أن افتراض استخدام خط مميز أمرٌ محفوف بالمخاطر. من ناحية أخرى، قد يكون منطق نظام لا يحاول التعويض عن خصائص خارجة عن نطاقه أكثر وضوحًا.

مراجع

  1. "معايير بروتوكول الإنترنت الرسمية » محرر RFC" . 
  2. ^ مايرز ، ج. (23 مايو 2000). آليات SASL GSSAPI . فريق عمل الإنترنت . مسودة المعرف-ietf-cat-sasl-gssapi-01 . تم الاسترجاع 2023-06-24 .
  3. 1 2 جوزيفسون، سيمون (2006). "7. ترميز الأساس 32 باستخدام الأبجدية السداسية الموسعة" . RFC 4648: ترميزات البيانات Base16 وBase32 وBase64 . IETF. doi : 10.17487/RFC4648 .
  4. لانكتوت، كريستيان (1999-03-01). "موعد أفضل؟ (الرسالة الثانية تحت هذا العنوان) - رسائل" . دكتور دوبس .
  5. "parseInt() - جافا سكريبت" . MDN مستندات الويب . موزيلا. 29 ديسمبر 2023.
  6. "الدوال المدمجة" . وثائق بايثون . مؤسسة برمجيات بايثون. مؤرشف من الأصل بتاريخ 26-10-2018 . تم الاطلاع عليه بتاريخ 09-08-2017 .
  7. O'Whielacronx, Zooko (2009). "ترميز أساس 32 الموجه نحو الإنسان" .
  8. دوغلاس كروكفورد. "القاعدة 32" . مؤرشف من الأصل بتاريخ 23-12-2002.
  9. "نصائح وحيل - geohash.org" . geohash.org . مؤرشف من الأصل بتاريخ 28-04-2020 . تم الاطلاع عليه بتاريخ 03-04-2020 .
  10. "آلان م. تورينج (1912 - 1954)" . مجلة الكمبيوتر 50. جامعة مانشستر . تاريخ الاسترجاع: 17 أبريل 2025 .
  11. "آلان م. تورينج (1912 - 1954)" . ديجيتال 60. جامعة مانشستر . تم الاطلاع عليه بتاريخ 17 أبريل 2025 .
  12. آلان م. تورينج، نُقلت بواسطة روبرت س. ثاو (13 فبراير 2000). "دليل آلان تورينج لجهاز فيرانتي مارك 1" (ملف PDF) . مجلة الكمبيوتر 50. جامعة مانشستر. أُرشف من النسخة الأصلية (ملف PDF) في 7 يونيو 2011. تم الاطلاع عليه في 17 أبريل 2025 .
  13. "البرمجة على جهاز فيرانتي مارك 1" . ديجيتال 60. جامعة مانشستر . تم الاطلاع عليه بتاريخ 17 أبريل 2025 .
  14. "CyoEncode" . SourceForge . 24 يونيو 2023.
  15. "Gnulib - مكتبة قابلية نقل GNU - مشروع GNU - مؤسسة البرمجيات الحرة" . www.gnu.org .
  16. "MIME-Base32 - مُشفِّر ومُفكِّك Base32" . MetaCPAN . تم الاطلاع عليه بتاريخ 29-07-2018 .
  17. "Base32 (Apache Commons Codec 1.15 API)" . commons.apache.org .
  18. "base32" . npm . 27 سبتمبر 2022.
  19. "base64 — Base16، Base32، Base64، Base85 Data Encodings" . وثائق بايثون .
  20. "حزمة Base32 - ترميز/Base32 - PKG.go.dev" .
  21. "base32 | RubyGems.org | مضيف جواهر مجتمعك" . rubygems.org .
  22. "محول السلسلة إلى سداسي عشري" . تنسيق الكود .
  23. هامارستروم، هارالد (2006)، "الندرة في الأنظمة العددية"، وقائع مؤتمر رارا وراريسيما (ملف PDF) ، مؤرشف من الأصل (ملف PDF) بتاريخ 19-08-2007 ، تم الاطلاع عليه بتاريخ 23-10-2009