ASCII وUnicode وتمثيل النصوص
افهم كيف يتحول النص إلى بايتات، ولماذا يهم ترميز المحارف في سياقات التشفير
ASCII وUnicode وتمثيل النصوص درس مجاني في Cryptology Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Cryptology Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Cryptology Academy 4 دروس في المجموع.
ASCII كترميز من 7 بت
يرمّز ASCII (American Standard Code for Information Interchange)، الذي وُحِّد عام 1963، عددًا قدره 128 محرفًا باستخدام 7 بتات (القيم 0-127). ويشمل الأبجدية الإنجليزية بحالتيها، والأرقام، وعلامات الترقيم، ومحارف التحكم.
صُمّم ASCII للغة الإنجليزية ولمعدات الاتصالات الأمريكية. وقد أدّى الغرض المقصود منه جيدًا، لكنه كان غير كافٍ جوهريًا لأي لغة غير الإنجليزية.
محارف التحكم في ASCII
المحارف الـ32 الأولى في ASCII (0-31)، بالإضافة إلى DEL (127)، هي محارف تحكم. وقد صُمّمت في الأصل للتحكم في أجهزة Teletype: LF (تغذية السطر، 10)، وCR (إرجاع العربة، 13)، وBEL (جرس، 7)، وTAB (9)، وESC (27).
يمكن أن تسبب محارف التحكم مشكلات في السياقات التشفيرية. إذ ينهي البايت الفارغ (0x00) سلاسل C مبكرًا، وقد يُفسَّر محرف DEL أو ESC بواسطة محاكيات الطرفية.
ASCII الموسّع ومشكلاته
أنشأت بلدان مختلفة امتداداتها الخاصة لـ ASCII باستخدام البت الثامن (القيم 128-255)، مما أدى إلى ظهور مئات الترميزات غير المتوافقة: ISO-8859-1 (Latin-1) لأوروبا الغربية، وKOI-8R للروسية، وBig5 للصينية.
يظهر المستند المحفوظ بترميز معين على شكل نص غير مفهوم عند فتحه بترميز مختلف. وقد جعل غياب معيار عالمي تطوير البرمجيات الدولية تحديًا كبيرًا طوال عقدَي 1980 و1990.
Unicode كمجموعة محارف عالمية
أُنشئ Unicode لتوفير مجموعة محارف عالمية واحدة تغطي جميع أنظمة الكتابة البشرية. وهو يعرّف حاليًا أكثر من 149,000 محرف يغطي 161 نظام كتابة، بما في ذلك أنظمة الكتابة التاريخية والرموز.
يفصل Unicode بين هوية المحرف، أي نقطة الترميز مثل U+0041 للحرف "A"، وبين الترميز، أي كيفية تخزين نقطة الترميز في البايتات. ويسمح هذا الفصل بتمثيل المحارف نفسها باستخدام تنسيقات ترميز متعددة.
الترميز متغير الطول في UTF-8
يرمّز UTF-8 نقاط ترميز Unicode باستخدام 1 إلى 4 بايتات. وتستخدم محارف ASCII (من U+0000 إلى U+007F) بايتًا واحدًا بالضبط، مطابقًا لقيم ASCII الخاصة بها، مما يجعل UTF-8 متوافقًا مع ASCII.
تستخدم المحارف من U+0080 إلى U+07FF بايتين. وتستخدم المحارف من U+0800 إلى U+FFFF ثلاثة بايتات، مما يغطي معظم أنظمة الكتابة الشائعة، بما فيها الصينية واليابانية والكورية. أما U+10000 وما بعده فتستخدم أربعة بايتات.
UTF-16 وUTF-32
يستخدم UTF-16 بايتين للمحارف الأكثر شيوعًا، أي ضمن المستوى متعدد اللغات الأساسي (Basic Multilingual Plane، من U+0000 إلى U+FFFF)، وأربعة بايتات، تُسمى أزواجًا بديلة، للمحارف التي تتجاوز U+FFFF. ويُستخدم داخليًا في Windows وJava.
يستخدم UTF-32 أربعة بايتات بالضبط لكل نقطة ترميز، مما يجعله ثابت العرض وسهل الفهرسة حسب موضع المحرف، لكنه يهدر المساحة عند التعامل مع نص يتكون معظمه من ASCII. ويُستخدم في بعض التمثيلات الداخلية للوصول العشوائي السريع.
علامة ترتيب البايتات (BOM)
علامة ترتيب البايتات (BOM) هي محرف Unicode U+FEFF يوضع في بداية الملف للإشارة إلى ترتيب البايتات والترميز. وفي UTF-16، تميّز بين الترتيب الكبير للبايتات (FE FF) والترتيب الصغير للبايتات (FF FE).
في UTF-8، تكون BOM (EF BB BF) غير ضرورية لأن UTF-8 لا يواجه مشكلات في ترتيب البايتات، لكن بعض برامج Windows تضيفها رغم ذلك. ويسبب هذا مشكلات في التطبيقات التشفيرية التي تتعامل مع BOM على أنها بيانات لا علامة.
أهمية الترميز في علم التشفير
تعمل دوال التجزئة التشفيرية وMACs على تسلسلات من البايتات، لا على محارف مجردة. فالسلسلة نفسها "café" تُرمَّز بشكل مختلف في UTF-8 (4 بايتات: 63 61 66 C3 A9) مقارنةً بـ Latin-1 (4 بايتات: 63 61 66 E9).
إذا جزأ نظامان السلسلة نفسها باستخدام ترميزين مختلفين، فسينتجان تجزئتَين مختلفتَين وستفشل المصادقة. ويجب أن تحدد بروتوكولات التشفير الترميز صراحةً لضمان قابلية التشغيل البيني.
الرموز التعبيرية في UTF-8
الرموز التعبيرية هي محارف Unicode في المستوى متعدد اللغات التكميلي. ويُرمَّز الرمز التعبيري "Grinning Face" (U+1F600) إلى 4 بايتات في UTF-8: F0 9F 98 80.
في سياقات الأمان، استُخدمت الرموز التعبيرية ومحارف Unicode كاملة العرض في هجمات التشابه الكتابي، حيث يخدع عنوان URL مثل "xn--pple-43d.com"، الذي يبدو مثل "apple.com"، المستخدمين لزيارة موقع ضار.
تطبيع Unicode وعلم التشفير
يمكن تمثيل بعض المحارف بأشكال متعددة في Unicode. فمثلًا، يمكن تمثيل "e with acute accent" بالنقطة U+00E9، أي الشكل المركب مسبقًا، أو بالنقطتين U+0065 U+0301، أي الحرف e متبوعًا باللكنة المركبة. ويبدو الشكلان متطابقين، لكن لهما تمثيلان مختلفان في البايتات.
قد تنتج الأنظمة التشفيرية التي لا تطبّع Unicode قبل التجزئة تجزئتَين مختلفتَين لسلاسل متطابقة بصريًا. ويُوصى عادةً بتطبيع NFKC قبل إجراء العمليات التشفيرية على النصوص.
اختيار الترميز المناسب للتشفير
عند تنفيذ الأنظمة التشفيرية، يكون اختيار الترميز قرارًا مهمًا يجب توثيقه. ويجب ترميز كلمات المرور باستخدام UTF-8 قبل تجزئتها. كما يجب أن تحدد حقول البروتوكول الترميز في وثائق مواصفات البروتوكول.
تُعد إخفاقات قابلية التشغيل البيني الناتجة عن عدم تطابق الترميزات مصدرًا شائعًا للأخطاء في الأنظمة التشفيرية. فقد تنتج عمليتان لتنفيذ البروتوكول نفسه نتائج مصادقة مختلفة إذا رمّزتا السلاسل بشكل مختلف.
اختبار ترميز UTF-8
اختبر فهمك لترميز UTF-8.
أهم النقاط: ترميز النصوص
يغطي ASCII عددًا قدره 128 محرفًا باستخدام 7 بتات. ويوفر Unicode مساحة عالمية لنقاط الترميز لجميع أنظمة الكتابة البشرية. ويرمّز UTF-8 Unicode باستخدام 1 إلى 4 بايتات، مع كون ASCII مجموعة فرعية تستخدم بايتًا واحدًا.
في علم التشفير، يهم الترميز لأن دوال التجزئة تعمل على البايتات. وينتج النص نفسه، عند استخدام ترميزات مختلفة، تجزئات مختلفة. ويُعد تطبيع Unicode ضروريًا قبل إجراء العمليات التشفيرية على النصوص.
الأسئلة الشائعة
هل درس «ASCII وUnicode وتمثيل النصوص» مجاني؟
نعم — نص درس «ASCII وUnicode وتمثيل النصوص» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Cryptology Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Cryptology Academy 4 دروس في المجموع.
ماذا ستتعلم في «ASCII وUnicode وتمثيل النصوص»؟
افهم كيف يتحول النص إلى بايتات، ولماذا يهم ترميز المحارف في سياقات التشفير تتمرن على Cryptology Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ Cryptology Academy؟
لا تُشترط خبرة سابقة. Cryptology Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.
كم من الوقت يستغرق درس «ASCII وUnicode وتمثيل النصوص»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس Cryptology Academy هذا؟
نعم. كل درس في Cryptology Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- ترميز Base64: كيف يعمل
- ASCII وUnicode وتمثيل النصوص
- النظام الست عشري في مخرجات التشفير
- الترميز مقابل التشفير مقابل التجزئة