إذا كنت قد تساءلت يوماً: 'كيف يعرف الموقع أن رقم الفيزا الذي أدخلته خاطئ حتى قبل أن أضغط على زر الدفع؟'، فأنت على وشك اكتشاف أحد أقدم وأهم الأسرار التقنية في عالم المدفوعات. الإجابة باختصار تكمن في خوارزمية لوان (Luhn Algorithm) و رقم تعريف البنك (BIN).
في مقالنا التأسيسي الدليل الشامل للفيزا الوهمية، تحدثنا بشكل عابر عن هيكلة البطاقات. في هذا الدليل، سنتوغل أكثر في الجانب التقني للمطورين والمهتمين بالأمن السيبراني.
ما هو الـ BIN (رقم تعريف البنك)؟
ببساطة، الـ BIN أو ما يسمى بـ IIN (Issuer Identification Number) هو أول 6 إلى 8 أرقام موجودة على أي بطاقة دفع في العالم. هذه الأرقام ليست عشوائية، بل هي بمنزلة 'جواز सफर' للبطاقة، وتحمل معلومات دقيقة جداً:
- الرقم الأول (MII): يحدد الصناعة الأساسية للجهة المصدرة. مثلاً: (4) فيزا، (5) ماستركارد، (3) أمريكان إكسبريس.
- الأرقام التالية: تحدد البنك المصدر للبطاقة (مثل بنك Chase أو بنك الراجحي)، ونوع البطاقة (دائنة Credit، أو مدينة Debit، أو مسبقة الدفع Prepaid)، ومستوى البطاقة (Gold, Platinum, Signature).
أهمية الـ BIN في مولدات البطاقات:
عندما يقوم المبرمجون بإنشاء 'فيزا وهمية' للاختبار، فإنهم يرسلون طلباً للمولد باستخدام BIN معين (مثلاً BIN أمريكي لبطاقة مسبقة الدفع) ليقوم المولد ببناء بقية الأرقام بناءً على هذا النمط. هذا ما يتيح للمبرمج اختبار بواباته الدفعية للتأكد من أنها ترفض أو تقبل بطاقات من دول محددة.
خوارزمية لوان (Luhn Algorithm): الحارس السري الأول
اخترعها عالم الكمبيوتر هانز بيتر لوان (Hans Peter Luhn) في مختبرات IBM عام 1954. الهدف من هذه الخوارزمية لم يكن التشفير أو الأمان ضد الهاكرز، بل كان منع الأخطاء البشرية البسيطة (مثل كتابة 14 بدلاً من 41) عند إدخال البيانات.
تعمل بوابات الدفع (ومولدات الفيزا الوهمية) على تطبيق هذه الخوارزمية كـ 'خط دفاع أول'. إذا لم ينجح الرقم في اجتياز اختبار لوان، فالموقع لن يرسل الطلب للبنك أصلاً، مما يوفر تكاليف المعالجة ويقلل الضغط على الشبكات.
كيف تعمل خوارزمية لوان بخطوات بسيطة؟
إليك كيف تتأكد البوابة أن الرقم المكون من 16 خانة صحيح هيكلياً:
1. بدءاً من الرقم قبل الأخير (الخانة 15)، والرجوع للخلف خطوة بخطوة، نقوم بمضاعفة (ضرب x 2) الأرقام الموجودة في الخانات الفردية (الأول، الثالث، الخامس... إلخ).
2. إذا نتج عن المضاعفة رقم أكبر من 9 (مثلاً 14)، نقوم بجمع رقمي الناتج معاً (1 + 4 = 5).