القائمة

التحقق من الأرقام: مجموعة الأحرف والطول ورقم التحقق

التحقق من الأرقام يجمع ثلاث طبقات—مجموعة الأحرف والطول ورقم التحقق—وقد ينتهي بأربع نتائج مختلفة. نشرح كيف تعمل كل طبقة وما الذي تستطيع إثباته فعلا.

تاريخ النشر

  • بيانات اختبار
  • التحقق
  • رقم التحقق

التحقق من الأرقام هو الإجراء الذي يقرر ما إذا كانت سلسلة من الأحرف مسموحا لها أن تمثل حسابا مصرفيا أو مستندا رسميا أو منتجا. وهو ليس اختبارا واحدا بل ثلاثة اختبارات، تطبق بترتيب ثابت: هل كل حرف مسموح داخل هذا النظام، وهل الطول هو الطول الذي يحدده النظام، وهل يتفق الحرف الأخير مع حساب الأحرف التي تسبقه.

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

ما هو التحقق من الأرقام؟

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

والكلمة نفسها تمد لغطي نشاطين لا علاقة بينهما. الأول بنيوي: هل تتبع هذه السلسلة التنسيق الذي يحدده نظامها؟ والثاني واقعي: هل صدر هذا الرقم يوما، ولمن؟ النشاط الأول وحده من اختصاص أداة التحقق. أما الثاني فيتطلب استعلاما من السجل الذي أصدر القيمة، وهو ما لا تستطيع أي عملية تعمل دون اتصال أن تنفذه.

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

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

ثلاث طبقات للترشيح: مجموعة الأحرف والطول ورقم التحقق

الطبقات الثلاث رخيصة التنفيذ، وكل واحدة منها عمياء عن الأخطاء التي تلتقطها الأخرى، وهذا ما يبرر وجودها معا.

الطبقة السؤال الذي تطرحه ما تلتقطه ما يمر من بين يديها
مجموعة الأحرف هل كل حرف مسموح هنا؟ حروف كتبت في حقل رقمي، ورموز غريبة، وعلامات تنسيق لصقت من مكان آخر رقما خاطئا لكنه مسموح بذاته
الطول هل حجم السلسلة هو الحجم الذي يسمح به النظام؟ حرفا سقط أو تكرر أثناء الكتابة سلسلة بالطول الصحيح لكن مع تبديل بين جارين
رقم التحقق هل ينتج الحرف الأخير من بقية الأحرف؟ معظم أخطاء الحرف الواحد وكثيرا من التبديلات المتجاورة أي قيمة لم تصدر في الأصل قط

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

لماذا لا يجعل نجاح التنسيق الرقم حقيقيا؟

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

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

وبناء عليه، تعامل مع النتيجة على أنها عبارة عن السلسلة، لا عن العالم. هذا التأطير يحفظ صدق رسائل الخطأ، ويمنع المراجع من قراءة ما لا تحمله علامة النجاح الخضراء.

كيف يمكن أن ينتمي رقم واحد إلى أنظمة عدة؟

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

والأداة التي تعلن بلدا واحدا مخمنا تخفي هذا الالتباس وتخترع معلومة لا تملكها. والواجهة الأفضل تسرد كل نظام تحققه السلسلة فعلا، وتترك للقارئ تحديد السجل الذي يستعلم منه بعد ذلك. والمنطق نفسه يعمل في الاتجاه المعاكس عندما لا يتحقق شيء: الجواب الصادق أن أيا من القواعد المنفذة لا يعرف هذا المدخل، لا أن القيمة باطلة. فرقم صحيح تماما قد يقع خارج مجموعة القواعد التي تعرفها الأداة، وهذا موضوع مقالة الأرقام بلا رقم تحقق.

التطبيع: المسافات والواصلات وحالة الأحرف

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

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

ويستحق أمران الحذر. فالتطبيع ليس إصلاحا، لأنه يزيل العرض لا الخطأ، ولذلك لن ينقذ أبدا حرفا كتب خطأ. وهو أيضا ليس إجراء أمنيا: فالإجراء الذي يقارن سلاسل مطبعة يظل يقارن مدخلات غير موثوقة.

للمطورين: كيف ترتب خط التحقق؟

صمم الخط كسلسلة من الخطوات النقية، تعيد كل واحدة نتيجة مع سبب، لا كقيمة منطقية واحدة تبتلع كل الفروق.

  1. طبع المدخل الخام واحتفظ بالصورة المطبعة بجانب الأصل.
  2. تحقق من مجموعة الأحرف وارفض كل ما يخرج عنها قبل تشغيل أي حساب.
  3. تحقق من الطول مقابل النظام الذي اختاره المستدعي.
  4. احسب حرف التحقق وقارنه.
  5. أعد نتيجة تفصل بين فحص فاشل ونظام غير معروف.

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

وأخيرا، أبق القواعد في صورة بيانات. فحين يغير نظام طوله أو حسابه، يجب أن يكون التحديث تغييرا في وصف القاعدة، لا في المنطق الذي يقرأها.

ما هي النتائج الأربع التي يجب أن تفرقها الأداة؟

التفريق بين أربع نتائج هو الخط الفاصل بين أداة صادقة وأداة مضللة، والاسم نفسه لكل نتيجة مهم بقدر معناها.

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

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

الخطوات التالية

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

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

تابع القراءة

أدلة أداة التحقق من أرقام البطاقات وأرقام الهوية