شفرة الأزتك

الترميز: "هذا مثال على رمز الأزتك لموقع ويكيبيديا."

رمز الأزتك هو رمز مصفوفي ابتكره أندرو لونغاكر الابن وروبرت هاسي عام ١٩٩٥. [ ١ ] نشرت شركة AIM هذا الرمز عام ١٩٩٧. ورغم حصول رمز الأزتك على براءة اختراع ، فقد أصبحت هذه البراءة ملكية عامة . [ ٢ ] كما نُشر رمز الأزتك وفقًا لمعيار ISO/IEC 24778:2024. سُمي رمز الأزتك بهذا الاسم لتشابه نمط البحث المركزي فيه مع هرم الأزتك ، ويتميز بإمكانية استخدامه مساحة أقل من رموز المصفوفة الشريطية الأخرى لأنه لا يتطلب منطقة فارغة محيطة به.

بناء

يُبنى الرمز على شبكة مربعة تتوسطها دائرة مركزية لتحديد موقع الشفرة. تُشفّر البيانات في حلقات مربعة متحدة المركز حول هذه الدائرة. تتكون الدائرة المركزية من 9×9 أو 13×13 بكسل ، ويُشفّر صف من البكسلات حولها معايير التشفير الأساسية، مما يُنتج "لبًا" من 11×11 أو 15×15 مربعًا. تُضاف البيانات على شكل "طبقات"، تحتوي كل منها على حلقتين من البكسلات، مما يُعطي أحجامًا إجمالية مثل 15×15، 19×19، 23×23، وهكذا.

تحتوي زوايا النواة على علامات توجيه، مما يسمح بقراءة الرمز حتى عند تدويره أو انعكاسه. تبدأ عملية فك التشفير من الزاوية التي تحتوي على ثلاث وحدات بكسل سوداء، وتستمر باتجاه عقارب الساعة إلى الزوايا التي تحتوي على وحدتين، ووحدة بكسل سوداء واحدة، وصفر من وحدات البكسل السوداء. تُشفّر وحدات البكسل المتغيرة في النواة المركزية الحجم، لذا ليس من الضروري تحديد حدود الرمز بمنطقة فارغة، على الرغم من أن بعض قارئات الرموز الشريطية تتطلب ذلك.

يمكن أن تُحاط النواة المدمجة لرمز الأزتك بطبقة واحدة إلى أربع طبقات، مما يُنتج رموزًا بأحجام تتراوح من 15×15 (مساحة لـ 13 رقمًا أو 12 حرفًا) إلى 27×27. يوجد أيضًا رمز "روني" خاص بحجم 11×11 يُشفّر بايتًا واحدًا من المعلومات. تدعم النواة الكاملة ما يصل إلى 32 طبقة، أي 151×151 بكسل، والتي يمكنها تشفير 3832 رقمًا، أو 3067 حرفًا، أو 1914 بايتًا من البيانات.

يُستخدم الجزء غير المُستخدم من الرمز للبيانات الأساسية في تصحيح أخطاء ريد-سولومون ، ويمكن ضبط هذا التقسيم بالكامل، ضمن حدود كلمة بيانات واحدة، وثلاث كلمات تحقق. العدد المُوصى به لكلمات التحقق هو 23% من سعة الرمز بالإضافة إلى ثلاث كلمات رمزية. [ 3 ]

من المفترض أن ينتج برنامج Aztec Code رموزًا قابلة للقراءة باستخدام تقنيات طباعة متنوعة. كما أنه مناسب تمامًا لشاشات الهواتف المحمولة والأجهزة المحمولة الأخرى.

التشفير

تتكون عملية التشفير من الخطوات التالية:

  1. تحويل الرسالة المصدرية إلى سلسلة من البتات
  2. حساب حجم الرمز اللازم ورسالة الوضع، مما يحدد حجم كلمة رمز ريد-سولومون
  3. حشو الرسالة في كلمات رمزية ريد-سولومون
  4. إضافة حشو للرسالة حتى حدود كلمة السر
  5. إضافة كلمات التحقق
  6. ترتيب الرسالة الكاملة بشكل حلزوني حول النواة

يتم إجراء جميع عمليات التحويل بين سلاسل البتات والأشكال الأخرى وفقًا لاتفاقية big-endian (البت الأكثر أهمية أولاً).

مجموعة الأحرف

يمكن ترميز جميع القيم ذات 8 بت، بالإضافة إلى رمزي هروب:

بشكل افتراضي، يتم تفسير الرموز من 0 إلى 127 وفقًا لمعيار ANSI X3.4 ( ASCII )، ويتم تفسير الرموز من 128 إلى 255 وفقًا لمعيار ISO/IEC 8859-1 : الأبجدية اللاتينية رقم 1. وهذا يتوافق مع ECI 000003.

تُترجم البايتات إلى رموز من 4 و 5 بتات، بناءً على نمط فك التشفير الحالي، مع رموز الإزاحة والتثبيت لتغيير الأنماط. أما قيم البايتات غير المتاحة بهذه الطريقة، فيمكن ترميزها باستخدام رمز "إزاحة ثنائية" عام، متبوعًا بطول وعدد من الرموز ذات 8 بتات.

عند تغيير الأوضاع، يؤثر تغيير الوضع على تفسير الرمز التالي فقط، بينما يؤثر تغيير الوضع على جميع الرموز التالية. تستخدم معظم الأوضاع رموزًا مكونة من 5 بتات، بينما يستخدم وضع الأرقام رموزًا مكونة من 4 بتات.

ترميز الأحرف في لغة الأزتك
شفرةوضعشفرةوضع
الجزء العلويأدنىمختلطنقطةرقمالجزء العلويأدنىمختلطنقطة
0نقطة التفتيشنقطة التفتيشنقطة التفتيشFLG( n )نقطة التفتيش16ياo^\+
1إس بيإس بيإس بيCRإس بي17Pص^]،
2أأCR LF018سؤالq^^-
3بب. SP119Rر^_.
4جج^C، إس بي220Ss@/
5دد^D: SP321تيت\:
6هـهـ^E!422يوu^؛
7Fو^F"523Vv_<
8جيز^G8624دبليوw`=
9ححدولار725Xx|>
10أناأناأنا%826Yy~؟
11جج^Jو927Zz[
12كك^K'،28L/LنحنL/L]
13لل^L(.29متوسط/كبيرمتوسط/كبيرU/L{
14مم^M)U/L30رخصة قيادةرخصة قيادةالربح/الخسارة}
15شمالن^[*نحن31B/SB/SB/SU/L
  • الوضع الابتدائي هو "العلوي"
  • x/S = إزاحة إلى الوضع x لحرف واحد؛ B/S = إزاحة إلى ثنائي 8 بت
  • x/L = تثبيت الوضع x للأحرف التالية
  • تُشفّر رموز النقاط من 2 إلى 5 بايتين لكل منها
  • يسرد الجدول أحرف ASCII، ولكن يتم ترميز قيم البايت، حتى في حالة استخدام مجموعة أحرف غير ASCII.

يتبع عملية الإزاحة الثنائية (B/S) طولٌ مكون من 5 بتات. إذا كان هذا الطول غير صفري، فهذا يشير إلى وجود 1-31 بايتًا، كل منها 8 بتات. أما إذا كان صفرًا، فتُضاف 11 بتًا إضافية لتحديد عدد البايتات التالية مطروحًا منها 31. (لاحظ أنه بالنسبة للأحجام من 32 إلى 62 بايتًا، فإن سلسلتي إزاحة بايتات، كل منهما 5 بتات، أكثر إيجازًا من سلسلة واحدة مكونة من 11 بتًا). عند نهاية التسلسل الثنائي، يُستأنف الوضع السابق.

يتبع FLG( n ) قيمة n مكونة من 3 بتات . n = 0 يرمز إلى FNC1. n = 1-6 يتبعه من 1 إلى 6 أرقام (في وضع الأرقام) يتم إضافة أصفار إليها لتكوين مُعرّف ECI مكون من 6 بتات. n = 7 محجوز وغير مسموح به حاليًا.

رسائل الوضع

تُشفّر رسالة الوضع عدد الطبقات ( L طبقة، مُشفّرة بالعدد الصحيح L − 1)، وعدد كلمات البيانات المشفرة ( D كلمة مشفرة، مُشفّرة بالعدد الصحيح D − 1) في الرسالة. وتُستخدم جميع الكلمات المشفرة المتبقية ككلمات تحقق.

في رموز أزتك المضغوطة، يُشفّر عدد الطبقات بقيمة ثنائية (2 بت)، وعدد كلمات البيانات المشفرة بقيمة سداسية (6 بت)، مما ينتج عنه كلمة نمطية من 8 بت. أما في رموز أزتك الكاملة، فيُشفّر عدد الطبقات بخمس بتات، وعدد كلمات البيانات المشفرة بأحد عشر بتًا، مما ينتج عنه كلمة نمطية من 16 بتًا.

تُقسّم كلمة الوضع إلى كلمتين أو أربع كلمات رمزية، كل منها مكونة من 4 بتات، في حقل GF(16) . تُضاف إليها 5 أو 6 كلمات تحقق من نوع ريد-سولومون، لتُشكّل رسالة وضع مكونة من 28 أو 40 بتًا، تُغلّف بطبقة من بكسل واحد حول النواة. وبذلك، يُستخدم رمز ريد-سولومون (15,10) أو (15,9) (يُختصر إلى (7,2) أو (10,4) على التوالي) على حقل GF(16).

لأن رمز Aztec المضغوط ذو الطبقة L+1 يمكنه استيعاب بيانات أكثر من الرمز الكامل ذو الطبقة L، فإن الرموز الكاملة التي تحتوي على أقل من 4 طبقات نادراً ما يتم استخدامها.

الأهم من ذلك، أن عدد الطبقات يحدد حجم كلمات التشفير المستخدمة في خوارزمية ريد-سولومون. ويتراوح هذا الحجم بين 6 و 12 بت.

كثيرات الحدود في حقل الأزتك
أجزاءمجالكثير الحدود البدائيكثير الحدود المولد (معاملات عشرية)يستخدم لـ
4GF(16)x 4 + x +1x 5 +11 x 4 +4 x 3 +6 x 2 +2 x +1 (الرمز المختصر) x 6 +7 x 5 +9 x 4 +3 x 3 +12 x 2 +10 x +12 (الرمز الكامل)رسائل الوضع
6GF(64)س 6 + س +1يعتمد ذلك على عدد كلمات تصحيح الأخطاء1-2 طبقة
8GF(256)x 8 + x 5 + x 3 + x 2 +1يعتمد ذلك على عدد كلمات تصحيح الأخطاء3-8 طبقات
10GF(1024)x 10 + x 3 +1يعتمد ذلك على عدد كلمات تصحيح الأخطاء9-22 طبقة
12GF(4096)x 12 + x 6 + x 5 + x 3 +1يعتمد ذلك على عدد كلمات تصحيح الأخطاء23-32 طبقة

حجم الكلمة المشفرة b هو أصغر عدد زوجي يضمن أن يكون العدد الإجمالي للكلمات المشفرة في الرمز أقل من الحد 2 b −1 والذي يمكن تصحيحه بواسطة رمز ريد سولومون.

كما ذكر أعلاه، يوصى بحجز ما لا يقل عن 23% من الكلمات المشفرة المتاحة، بالإضافة إلى 3، للتصحيح، واختيار حجم الرمز بحيث تتناسب الرسالة مع المساحة المتاحة.

حشوة صغيرة

تُقسّم بتات البيانات إلى كلمات رمزية، حيث يُمثّل البت الأول المعامل الأكثر أهمية. أثناء هذه العملية، يتم تجنب الكلمات الرمزية التي تتكون جميع بتاتها من أصفار أو آحاد باستخدام تقنية حشو البتات : إذا كانت أول b − 1 بت من كلمة رمزية لها نفس القيمة، يُضاف بت إضافي بالقيمة المُكمّلة إلى تدفق البيانات. تتم هذه الإضافة سواءً كانت قيمة البت الأخير من الكلمة الرمزية متطابقة أم لا.

لاحظ أيضًا أن هذا ينطبق فقط على سلاسل مكونة من b −1 بت في بداية كلمة التشفير . يُسمح بسلاسل أطول من البتات المتطابقة طالما أنها تقع على حدود كلمة التشفير.

عند فك التشفير، يمكن افتراض أن كلمة رمزية مكونة من أصفار فقط أو من واحد فقط هي عملية محو ، ويتم تصحيحها بكفاءة أكبر من الخطأ العام.

تؤدي هذه العملية إلى إطالة الرسالة، ولا يُعرف العدد النهائي لكلمات البيانات المشفرة المسجلة في رسالة الوضع إلا بعد اكتمالها. وفي حالات نادرة، قد يكون من الضروري الانتقال إلى الرمز الأكبر التالي وإعادة العملية من البداية للحفاظ على الحد الأدنى من كلمات التحقق.

حشوة

بعد عملية حشو البتات، تُضاف بتة واحدة إلى سلسلة البيانات حتى حدود الكلمة المشفرة التالية. إذا نتج عن ذلك كلمة مشفرة مكونة من جميع البتات الآحاد، تُغيّر البتة الأخيرة إلى الصفر (ويتجاهلها المُفكِّك باعتبارها بتة حشو). عند فك التشفير، قد تُفكَّك بتات الحشو كرموز إزاحة وتثبيت، لكن ذلك لن يؤثر على محتوى الرسالة. يجب على القارئ قبول وتجاهل أي رمز جزئي في نهاية الرسالة، طالما أنه مكون من جميع البتات الآحاد.

بالإضافة إلى ذلك، إذا لم يكن إجمالي عدد بتات البيانات المتاحة في الرمز من مضاعفات حجم كلمة الترميز، تُضاف إلى سلسلة البيانات عدد مناسب من البتات الصفرية لشغل المساحة الإضافية. ولا تُحتسب هذه البتات ضمن عملية حساب كلمة التحقق.

تحقق من الكلمات السرية

يجب إضافة كلمات تحقق إلى كل من كلمة الوضع والبيانات لملء المساحة المتاحة. ويتم حساب ذلك بإضافة K كلمة تحقق بحيث تكون الرسالة بأكملها من مضاعفات متعددة حدود ريد-سولومون ( x - 2)( x - 4)...( x - 2K ).

لاحظ أن كلمات التحقق لا تخضع لحشو البتات، وقد تكون جميعها أصفارًا أو جميعها آحادًا. وبالتالي، لا يمكن اكتشاف حذف كلمة التحقق.

صياغة الرسالة

رمز أزتيكي مكون من 9 طبقات (53×53) مع شبكة مرجعية مميزة باللون الأحمر.

يحتوي رمز الأزتك الكامل، بالإضافة إلى النواة، على "شبكة مرجعية" من البكسلات السوداء والبيضاء المتناوبة، تشغل كل صف وعمود سادس عشر. أما رمز الأزتك المضغوط فلا يحتوي على هذه الشبكة. تُمكّن هذه البكسلات المعروفة قارئ الرموز من الحفاظ على محاذاة مع شبكة البكسلات حتى مع الرموز الكبيرة. بالنسبة لما يصل إلى 4 طبقات (31×31 بكسل)، تتكون هذه الشبكة من خطوط مفردة تمتد للخارج من النواة، مُحافظةً على النمط المتناوب. أما داخل الطبقة الخامسة، فتُضاف صفوف وأعمدة إضافية من البكسلات المتناوبة على بُعد ±16 بكسل من المركز، بحيث تقع الطبقة الخامسة على بُعد ±17 و±18 بكسل من المركز، ويبلغ حجم الرمز ذي الخمس طبقات 37×37 بكسل.

وبالمثل، تُضاف صفوف وأعمدة إضافية لشبكة المرجع على بُعد ±32 بكسل من المركز، مما يجعل الرمز ذو 12 طبقة بحجم 67×67 بكسل. في هذه الحالة، تشغل الطبقة الثانية عشرة حلقات على بُعد ±31 و±33 بكسل من المركز. ويستمر النمط إلى الخارج بلا حدود، حيث تفصل صفوف وأعمدة شبكة المرجع بين كتل البيانات التي يبلغ حجمها 15 بكسل.

إحدى طرق إنشاء الرمز هي حذف شبكة المرجع بالكامل والبدء بنواة بحجم 14×14 بكسل متمركزة على مربع أبيض بحجم 2×2 بكسل. ثم تقسيمها إلى كتل بحجم 15×15 بكسل وإدراج شبكة المرجع بينها.

تبدأ رسالة الوضع من الزاوية العلوية اليسرى للمعالج وتلتف حوله باتجاه عقارب الساعة في طبقة بسماكة بت واحد. تبدأ الرسالة بالبت الأكثر أهمية من عدد الطبقات وتنتهي بكلمات التحقق. بالنسبة لرمز أزتيك المضغوط، تُقسّم الرسالة إلى أربعة أجزاء، كل جزء منها 7 بتات، لإتاحة مساحة لعلامات التوجيه. أما بالنسبة لرمز أزتيك الكامل، فتُقسّم الرسالة إلى أربعة أجزاء، كل جزء منها 10 بتات، ويُقسّم كل جزء من هذه الأجزاء إلى نصفين بواسطة شبكة المرجع.

في بعض الحالات، لا ينقسم إجمالي سعة المصفوفة بالتساوي على عدد الكلمات المشفرة الكاملة. في هذه الحالات، تُضاف أصفار إلى بداية الرسالة الرئيسية. لا تُحتسب هذه الأصفار ضمن حساب كلمة التحقق، ويجب تجاهلها أثناء فك التشفير. يمكن حساب إجمالي سعة المصفوفة لرمز كامل كالتالي: (112 + 16 × L) × L لرمز أزتك كامل، و(88 + 16 × L) × L لرمز أزتك مضغوط، حيث L هو حجم الرمز بالطبقات. [ 4 ] على سبيل المثال، يبلغ إجمالي سعة المصفوفة لرمز أزتك مضغوط ذي طبقة واحدة 104 بتات. بما أن الكلمات المشفرة تتكون من ستة بتات، فإن هذا يعطي 17 كلمة مشفرة وبتين إضافيتين. تُضاف بتان صفريتان إلى بداية الرسالة كحشو، ويجب تجاهلهما أثناء فك التشفير.

تبدأ الرسالة الرئيسية المُضافة من الزاوية العلوية اليسرى الخارجية للرمز بأكمله، وتلتف حوله عكس اتجاه عقارب الساعة في طبقة بسمك 2 بت، وتنتهي مباشرةً فوق الزاوية العلوية اليسرى للمركز. هذا يضع كلمات البيانات المُضافة، التي يمكن اكتشاف عمليات المحو فيها، في الطبقات الخارجية للرمز، وهي الأكثر عرضةً للمحو. تُخزَّن كلمات التحقق بالقرب من المركز. وتنتهي كلمة التحقق الأخيرة فوق الزاوية العلوية اليسرى للمركز مباشرةً.

مع وضع النواة في وضعها القياسي، تُوضع البتة الأولى من كلمة البيانات الأولى في الزاوية العلوية اليسرى، مع وضع البتات الإضافية في عمود بعرض بتين من اليسار إلى اليمين ومن الأعلى إلى الأسفل. يستمر هذا حتى صفين من أسفل الرمز، حيث يدور النمط 90 درجة عكس اتجاه عقارب الساعة، ويستمر في صف بارتفاع بتين، من الأسفل إلى الأعلى ومن اليسار إلى اليمين. بعد أربع طبقات ربعية متساوية الحجم، يستمر الشكل الحلزوني من الزاوية العلوية اليسرى للطبقة الداخلية التالية، وينتهي أخيرًا على بُعد بكسل واحد فوق الزاوية العلوية اليسرى للنواة.

وأخيرًا، تتم طباعة البتات التي قيمتها 1 على شكل مربعات سوداء، وتتم طباعة البتات التي قيمتها 0 على شكل مربعات بيضاء.

الاستخدام

تذكرة إلكترونية من دويتشه بان. يُرجى ملاحظة أن رمز Aztec الشريطي في هذه التذكرة النموذجية غير قابل للقراءة باستخدام تطبيق عادي لأن المركز مختلف.

ينقل

تُستخدم رموز الأزتك على نطاق واسع في إصدار تذاكر النقل.

اعتمدت شركات الطيران ( وفقًا لمعيار BCBP التابع للاتحاد الدولي للنقل الجوي) رمز الأزتك لبطاقات الصعود الإلكترونية إلى الطائرة. وترسل العديد من شركات الطيران رموز الأزتك إلى هواتف الركاب المحمولة لتكون بمثابة بطاقات صعود. وغالبًا ما يتم دمج هذه الرموز مع تطبيقات على هواتف الركاب، بما في ذلك تطبيق Apple Wallet .

تُستخدم رموز الأزتك أيضًا في السكك الحديدية، بما في ذلك مترو طهران ، والسكك الحديدية الوطنية البريطانية ، ويوروستار ، ودويتشه بان ، و TCDD Taşımacılık ، وDSB ، وSJ ، والسكك الحديدية السلوفاكية ، والسكك الحديدية السلوفينية ، والسكك الحديدية الكرواتية ، وترينيتاليا ، والسكك الحديدية الهولندية ، وPasažieru vilciens ، و PKP Intercity ، ومجموعة VR ، وفيا ريل ، والسكك الحديدية الفيدرالية السويسرية ، و SNCB، و SNCF، وذلك لتذاكر تُباع عبر الإنترنت ويطبعها العملاء أو تُعرض على شاشات الهواتف المحمولة. استخدمت السكك الحديدية التشيكية الرمز أيضًا، لكنها تحولت إلى رمز الاستجابة السريعة (QR code ). يتم مسح رمز الأزتك بواسطة ماسح ضوئي محمول من قِبل موظفي القطار أو عند بوابة الدخول للتحقق من صحة التذكرة.

الحكومة

تحتوي وثائق تسجيل السيارات في بولندا على ملخص مضغوط باستخدام خوارزمية NRV2E، ومُشفّر برمز أزتيك. وتجري حاليًا أعمال لتمكين شركات تأمين السيارات من ملء المعلومات ذات الصلة تلقائيًا استنادًا إلى الصور الرقمية للوثيقة كخطوة أولى لإبرام عقد تأمين جديد.

تقوم مصلحة الضرائب الفيدرالية في روسيا بتشفير معلومات الدفع في الإشعارات الضريبية باستخدام رمز الأزتك.

تجاري

تستخدم العديد من شركات الاتصالات في كندا هذه التقنية أيضاً، بما في ذلك EastLink و Shaw Cable و Bell Aliant .

انظر أيضاً

مراجع

    • US 5591956 ، لونغاكر الابن، أندرو وهوسي ، روبرت، "بنية ترميز البيانات ثنائية الأبعاد والرموز للاستخدام مع أجهزة القراءة البصرية"، نُشر في 7 يناير 1997 
  1. الجريدة الرسمية . مكتب براءات الاختراع بالولايات المتحدة. 17 يونيو 1997. بموجب هذا، تُخصص للجمهور كامل مدة براءة الاختراع المذكورة.انقر على "الصور" ثم "التصحيح" للاطلاع على الإهداء للملكية العامة.
  2. آدامز، روس. "صفحة الباركود ثنائي الأبعاد" . مؤرشف من الأصل في 30 أبريل 2010. تم الاطلاع عليه في 14 يوليو 2022 .
  3. "Спецификация Aztec Code (без Small Aztec)" [ مواصفات كود الأزتك (بدون الأزتك الصغيرة) ] (باللغة الروسية). مؤرشف من الأصل بتاريخ 25 فبراير 2020.
  4. "إلغاء تذاكر القطارات عبر الهاتف المحمول في المملكة المتحدة" . eta.st. 31 يناير 2023. تم الاطلاع عليه في 5 فبراير 2023 .