خوارزمية لون: نظام التحقق من صحة أرقام التعريف

خوارزمية لون: نظام التحقق من صحة أرقام التعريف

خوارزمية لون (Luhn Algorithm)

خوارزمية لون، المعروفة أيضاً باسم صيغة لون أو خوارزمية "المقاس 10" (mod 10)، هي صيغة بسيطة لرقم التحقق تم تطويرها بواسطة عالم شركة IBM، هانز بيتر لون. تُستخدم هذه الخوارزمية للتحقق من صحة مجموعة متنوعة من أرقام التعريف، والهدف الأساسي منها هو تصميم نظام ترقيم يتيح للكمبيوتر التحقق بسرعة من وجود أخطاء عند إدخال الأرقام يدوياً من قبل البشر.

تعتبر الخوارزمية حالياً ضمن الملكية العامة وتُستخدم على نطاق واسع عالمياً، وهي محددة في المعيار الدولي ISO/IEC 7812-1. من المهم ملاحظة أن خوارزمية لون ليست دالة تشفير آمنة، بل صُممت للحماية من الأخطاء العرضية أثناء الإدخال، وليس للتصدي للهجمات الخبيثة. لذا، تعتمد معظم أرقام بطاقات الائتمان والعديد من أرقام الهوية الحكومية على هذه الخوارزمية لتمييز الأرقام الصحيحة عن تلك التي كتبت بشكل خاطئ.

كيفية عمل خوارزمية لون

يتم حساب رقم التحقق باتباع الخطوات التالية:

  1. إزالة رقم التحقق من الرقم (إذا كان موجوداً بالفعل)، مما يترك ما يسمى بـ "الحمولة" (Payload).
  2. البدء بأرقام الحمولة ومضاعفة كل رقم ثاني (الرقم الموجود في موقع فردي عند الترتيب العكسي) عند الترقيم من اليسار.
  3. معالجة الحمولة من اليمين إلى اليسار؛ إذا تجاوز الرقم المضاعف القيمة 9، يتم طرح 9 من هذا الرقم.
  4. جمع كل الأرقام الناتجة (بما في ذلك الأرقام التي لم يتم مضاعفتها).
  5. يتم حساب رقم التحقق النهائي باستخدام الصيغة التالية: (10 - (s mod 10)) mod 10، حيث تمثل s مجموع الخطوة الرابعة. هذا هو أصغر رقم (قد يكون صفراً) يجب إضافته إلى s لجعله مضاعفاً للعدد 10.

هناك صيغ أخرى تعطي نفس النتيجة، مثل: 9 - ((s + 9) mod 10) أو (10 - s) mod 10 أو 10⌈s/10⌉ - s.

صيغة حساب رقم التحقق
الصيغة الرياضية الأساسية لحساب رقم التحقق في خوارزمية لون
رمز المجموع s
تمثيل المجموع s المستخدم في الحسابات
صيغة بديلة 1
إحدى الصيغ البديلة لحساب رقم التحقق
صيغة بديلة 2
صيغة رياضية أخرى للتحقق من الأرقام
صيغة السقف الرياضية
استخدام دالة السقف في حساب رقم التحقق
صيغة بديلة مكررة
تمثيل إضافي لعملية حساب المودولو

مثال على حساب رقم التحقق

لنفترض أن لدينا رقم حساب (الحمولة فقط) هو: 1789372997. بعد تطبيق خطوات المضاعفة والجمع، يكون مجموع الأرقام الناتجة هو 56. يتم حساب رقم التحقق كالتالي:

(10 - (56 mod 10)) mod 10 = 4

مثال حسابي
تطبيق عملي لحساب رقم التحقق للرقم 1789372997

وبذلك يصبح رقم الحساب الكامل هو: 17893729974.

مثال على التحقق من صحة رقم

للتحقق من صحة رقم معين، نقوم بإزالة الرقم الأخير (رقم التحقق)، ثم نعيد حساب رقم التحقق بناءً على الأرقام المتبقية. إذا تطابق الرقم المحسوب مع الرقم الأخير الأصلي، فإن الرقم يعتبر صحيحاً.

نقاط القوة والضعف

تستطيع خوارزمية لون اكتشاف جميع أخطاء الرقم الواحد، ومعظم عمليات تبديل الأرقام المتجاورة. ومع ذلك، فإنها لا تستطيع اكتشاف تبديل التسلسل 09 إلى 90 (أو العكس). كما أنها لا تكتشف بعض الأخطاء التوأمية مثل (22 ↔ 55) أو (33 ↔ 66).

هناك خوارزميات أكثر تعقيداً مثل خوارزمية "فيرهوف" (Verhoeff) وخوارزمية "دام" (Damm) التي يمكنها اكتشاف المزيد من أخطاء النسخ. كما توجد نسخة مطورة تسمى "Luhn mod N" تدعم السلاسل النصية غير الرقمية.

استخدامات خوارزمية لون

تُستخدم هذه الخوارزمية في العديد من الأنظمة العالمية، ومن أبرزها:

  • أرقام بطاقات الائتمان.
  • أرقام IMEI للهواتف المحمولة.
  • أرقام CUSIP للأدوات المالية في أمريكا الشمالية.
  • أرقام الهوية الوطنية في عدة دول (مثل إسرائيل، جنوب أفريقيا، السويد).
  • أرقام التأمين الاجتماعي في كندا.
  • أرقام ICCID لشرائح SIM.
  • أرقام طلبات براءات الاختراع الأوروبية.
  • أنظمة تتبع الطرود في خدمة البريد الأمريكية (نسخة معدلة).

أسئلة شائعة

هل خوارزمية لون آمنة ضد الهجمات السيبرانية؟

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

ما هي الأخطاء التي لا تستطيع خوارزمية لون اكتشافها؟

لا يمكنها اكتشاف تبديل الرقمين 09 و 90، وبعض الأخطاء التوأمية المحددة مثل تبديل 22 بـ 55.

لماذا تُستخدم خوارزمية لون في بطاقات الائتمان؟

لأنها تسمح للأنظمة بالتحقق فوراً من أن الرقم المدخل صحيح هيكلياً قبل إرسال الطلب إلى خادم التحقق، مما يقلل من الضغط على الشبكة.