Command Palette

Search for a command to run...

خوارزمية LUHN: كيف يعمل التحقق من صحة بطاقة الائتمان

خوارزمية LUHN: كيف يعمل التحقق من صحة بطاقة الائتمان

T
Toolz Team
|Sep 13, 2026|16 دقيقة قراءة
تفضل Toolz.dev على Google

جزء من مجموعة الأمان

مدقق بطاقة الائتمان

تحقق من رقم بطاقة الائتمان مقابل المجموع الاختباري لـ Luhn واكتشف شبكة بطاقاته. التحقق من صحة التنسيق فقط، ولا تتصل بالبنك مطلقًا.

استخدم مدقق بطاقة الائتمان

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

ليرة تركية؛DR: يؤكد مدقق بطاقة الائتمان أن الرقم صحيح من الناحية الهيكلية، وليس أنه ينتمي إلى حساب حقيقي. يقوم بإجراء اختبارين مستقلين: المجموع الاختباري Luhn من ISO/IEC 7812-1، والذي يلتقط تقريبًا كل خطأ مطبعي مكون من رقم واحد والتحويل المجاور، والتحقق من الطول والبادئة مقابل كل شبكة &#39؛ نطاقات المُصدر المنشورة. يمكن أن يجتاز الرقم واحدًا ويفشل في الآخر، لذلك يتم الإبلاغ عن النتيجتين بشكل منفصل. يتم تشغيله بالكامل في متصفحك، لذلك لا يتم تحميل أي رقم بطاقة على الإطلاق، ولا يمكنه أبدًا إخبارك ما إذا كانت البطاقة تحتوي على أموال أم لا. فقط المُصدر يعرف ذلك.

ماذا يعني أن يكون رقم البطاقة صالحًا؟

رقم بطاقة الدفع، رسميًا رقم الحساب الأساسي أو PAN، ليس سلسلة عشوائية من الأرقام. يتم تعريف هيكلها بواسطة ايزو/آي إي سي 7812. الأرقام الستة إلى الثمانية الأولى هي رقم تعريف المصدر، أو IIN، والذي كان يسمى رقم تعريف البنك (BIN). تحدد هذه الأرقام الشبكة والبنك المصدر. الأرقام بعد ذلك حتى الثاني إلى الأخير هي معرف الحساب الفردي، والرقم الأخير هو رقم فحص محسوب باستخدام خوارزمية Luhn.

لذا &quot؛ صالح وquot؛ له معنيان منفصلان، ويساعد على الفصل بينهما. الأول هو أن الرقم يخضع لمجموع Luhn الاختباري، مما يعني أن رقم التحقق يتوافق مع بقية الرقم. والثاني هو أن الرقم له الطول والبادئة المناسبين لشبكة بطاقات حقيقية. يمكن أن يفي الرقم بشرط واحد وليس الآخر. 4111 1111 1111 1112 يحتوي على بادئة Visa وطول Visa ولكنه يفشل في Luhn. تمر سلسلة عشوائية مكونة من ستة عشر رقمًا تنتهي برقم التحقق الصحيح بـ Luhn ولكنها قد تبدأ ببادئة لا تمتلكها أي شبكة. يخبرك المدقق الجيد بأي من الاثنين فشل، لأن الإصلاح يختلف في كل حالة.

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

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

تم تسجيل براءة اختراع خوارزمية Luhn، والتي تسمى أيضًا خوارزمية mod-10، بواسطة Hans Peter Luhn في شركة IBM في عام 1960 وهي الآن في الملكية العامة. إنه مجموع اختباري، مما يعني أن الغرض الكامل منه هو اكتشاف الأخطاء العرضية، وليس توفير أي أمان. إنه يعمل هكذا. بدءًا من أقصى اليمين والتحرك يسارًا، يمكنك مضاعفة كل رقم ثانٍ. إذا كانت المضاعفة تنتج رقمًا أكبر من تسعة، فإنك تطرح تسعة منه (وهو نفس جمع الرقمين معًا). ثم تقوم بجمع جميع الأرقام، الأرقام المضاعفة والأرقام التي لم تمسها. إذا كان المجموع يقبل القسمة على عشرة، فإن الرقم يمر.

هنا هو التحقق 4111 1111 1111 1111، العمل من اليمين إلى اليسار. الرقم الموجود في أقصى اليمين هو الموضع الأول ولا يتضاعف. مضاعفة كل رقم ثانٍ يعطي مجموعة من الآحاد والثنائيات، ويأتي الثنائي من المواضع المضاعفة. أضفهم جميعًا لأعلى وسيهبط المجموع على مضاعف العشرة، وبالتالي يمر الرقم. قم بتغيير أي رقم واحد ويتوقف المجموع دائمًا تقريبًا عن كونه مضاعفًا للعشرة، وهو بالضبط ما يجعل الشيك مفيدًا.

قيمة Luhn هي في ما تلتقطه. يكتشف كل خطأ مكون من رقم واحد، مما يعني أن أي رقم واحد مكتوب بشكل خاطئ. كما أنه يلتقط تقريبًا كل تبديل لرقمين متجاورين، الكلاسيكي &quot؛ لقد كتبت 21 بدلاً من 12&quot؛ خطأ، مع استثناء واحد معروف: أنه لا يلتقط مبادلة 09 و 90، لأن كلاهما يعينان نفس المجموع المرجح. هذه نقطة عمياء حقيقية، ولكنها نادرة، وهذا هو السبب في أن Luhn عبارة عن مجموع اختباري وليس ضمان تشفير. للتحقق من صحة النموذج، فهو أكثر من جيد بما فيه الكفاية، ولهذا السبب فهو يقع خلف حقول البطاقة في كل عملية دفع على الإنترنت.

كيف يتم اكتشاف شبكة البطاقة؟

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

شبكة يبدأ ب أطوال صالحة رمز الأمان
تأشيرة 4 13، 16، 19 3
ماستركارد 51-55، 2221-2720 16 3
أمريكان إكسبريس 34، 37 15 4
يكتشف 6011، 65، 644-649، 622126-622925 16، 19 3
نادي داينرز 300-305، 309، 36، 38-39 14، 16، 19 3
جي سي بي 3528-3589 16-19 3
يونيون باي 62 16-19 3
المايسترو 50، 56-69 (مختار) 12-19 3

التداخلات هي الجزء المثير للاهتمام، والخطأ فيها هو مدى سوء إطلاق أجهزة الكشف الساذجة. أضافت ماستركارد 2221-2720 النطاق في عام 2017، لذلك أبلغ كاشف مكتوب قبل ذلك عن أن تلك البطاقات غير معروفة. يمتلك Discover شريحة ضيقة من 62 فضاء، 622126 خلال 622925، بينما تمتلك UnionPay بقية 62، لذا فإن الترتيب الذي تختبرهم به هو الذي يقرر ما إذا كان أ 6221 تقرأ البطاقة كـ Discover أو UnionPay. يقوم المدقق باختبار نافذة Discover المحددة قبل بادئة UnionPay العريضة بحيث يهبط كلاهما بشكل صحيح. American Express هي التي تقوم بنقل رمز التنسيق، لأنها تستخدم خمسة عشر رقمًا مجمعة 4-6-5 بدلاً من المجموعات الأربع المعتادة المكونة من أربعة أرقام، وتستخدم رمز أمان مكون من أربعة أرقام (CID مطبوع على المقدمة) بدلاً من رمز CVV المكون من ثلاثة أرقام على الخلف.

كيفية استخدام مدقق بطاقة الائتمان

الأداة بسيطة عن عمد. قمت بلصق رقم وقراءة النتيجة. لا يوجد زر إرسال ولا شيء للتكوين.

الخطوة 1: أدخل الرقم

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

الخطوة الثانية: اقرأ الحكم

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

الخطوة 3: التحقق من الشبكة المكتشفة

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

الخطوة 4: انسخ الرقم المنسق أو المقنع

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

أين يتناسب التحقق من الصحة، وأين يتوقف؟

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

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

كيف يمكن مقارنة ذلك بالتحقق من الصحة على الخادم؟

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

الأدوات ذات الصلة ومزيد من القراءة

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

للسياق الأوسع، خصوصية البيانات والأدوات عبر الإنترنت يشرح الدليل سبب أهمية إجراء عمليات التحقق الحساسة من جانب العميل، و دليل أدوات الترميز يضع المدقق في سياق بقية المجموعة اليومية للمطور &#39؛s. كل شيء على Toolz.dev يعمل في متصفحك، وهذا هو السبب الرئيسي وراء أمان لصق رقم البطاقة فيه: فهو لا يترك جهازك أبدًا.

الأسئلة المتداولة

ما الذي تتحقق منه خوارزمية Luhn؟

خوارزمية Luhn عبارة عن مجموع اختباري mod-10 يتحقق من عدم كتابة رقم بشكل خاطئ. فهو يضاعف كل رقم ثانٍ من اليمين، ويطرح تسعة من أي نتيجة أعلى من تسعة، ويجمع جميع الأرقام، ويؤكد أن المجموع قابل للقسمة على عشرة. فهو يلتقط كل خطأ مكون من رقم واحد وكل مبادلة لرقمين متجاورين تقريبًا، ولكنه مجموع اختباري، وليس ميزة أمان، ولا يمكنه إثبات أن البطاقة حقيقية.

هل الرقم الصحيح يعني أن البطاقة تعمل؟

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

كيف يتم اكتشاف العلامة التجارية للبطاقة من الرقم؟

تتم قراءة العلامة التجارية من الأرقام الأولى، رقم تعريف المصدر. تبدأ Visa بالرقم 4، وMastercard بالرقم 51-55 أو 2221-2720، وAmerican Express بالرقم 34 أو 37، وهكذا. تسمح كل شبكة أيضًا بأطوال إجمالية معينة فقط، لذلك يتحقق المدقق من البادئة والطول معًا ويبلغ عن الشبكة التي تطابقها.

هل من الآمن إدخال رقم البطاقة في هذه الأداة؟

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

لماذا تمر بطاقتي الحقيقية بـ Luhn ولكنها تفشل في التحقق من الطول؟

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

ما هي أرقام بطاقات الاختبار ولماذا توجد؟

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

ما الفرق بين CVV ورقم البطاقة؟

رقم البطاقة هو رقم الحساب الأساسي الطويل الذي يحدد الحساب. CVV أو CVC أو CID هو رمز الأمان القصير، وهو ثلاثة أرقام لمعظم الشبكات وأربعة أرقام لـ American Express، ويتم طباعته بشكل منفصل عن الرقم. تتحقق هذه الأداة من صحة رقم البطاقة فقط؛ ولا يتحقق من رمز الأمان الذي تم التحقق منه من قبل المُصدر أثناء المعاملة.

هل يستطيع هذا المدقق إنشاء بطاقات ائتمان عاملة؟

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


Comments

0 comments

0/2000 characters

No comments yet. Be the first to share your thoughts!