شرح توضيحي · مع أمثلة تطبيقية

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

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

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

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

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

مثال توضيحي 1 — خوارزمية Luhn لرقم البطاقة.

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

الرقمالموضع من اليمينمضاعف؟يُحتسب كـ
3رقم التحقق3
1الثاني من اليمين1 × 2 = 22
7الثالث7
8الرابع8 × 2 = 16 → 1 + 67
9الخامس9
3السادس3 × 2 = 66
7السابع7
2الثامن2 × 2 = 44
9التاسع9
9العاشر9 × 2 = 18 → 1 + 89
7الحادي عشر7

العمود الموجود على اليمين يساوي مجموعه 3 + 2 + 7 + 7 + 9 + 6 + 7 + 4 + 9 + 9 + 7 = 70. العدد 70 يقبل القسمة على عشرة، لذا فهو صالح. إذا غيّرت أي رقم واحد، فإن المجموع لن يكون مضاعفًا للعشرة. جرّب ذلك في مدقق بطاقة الائتمان — حيث تُنفذ هذه العمليات الحسابية بالضبط على جهازك.

مثال توضيحي 2 — مجموع مرجّح (ISBN-10)

تستخدم العديد من أرقام الهوية الوطنية مجموعًا مرجّحًا: يتم ضرب كل رقم في وزن ثابت، ثم جمع النتائج وفحص الباقي. يُعد ISBN-10 أفضل مثال على ذلك. بالنسبة لـ 0-306-40615-2، تتراوح الأوزان من 10 إلى 1:

0×10 + 3×9 + 0×8 + 6×7 + 4×6 + 0×5 + 6×4 + 1×3 + 5×2 + 2×1 = 132

العدد 132 يساوي تمامًا 11 × 12، لذا فإن الباقي عند قسمة العدد على 11 هو صفر ورقم ISBN صالح. تتبع أرقام CPF البرازيلية وPESEL البولندية وعشرات المعرفات الأخرى نفس النمط مع أوزانها ومعاملاتها الخاصة — ولهذا السبب يمكن لأداة مدقّق الهوية الدفعي أن تتحقق من صحة آلاف منها في ثانية واحدة.

مثال توضيحي 3 — رقم IBAN ومعامل 97

تستخدم أرقام الحسابات المصرفية الدولية معيار ISO 7064 mod 97-10، وهو نظام أقوى يحتوي على رقمين للتحقق. خذ المثال القياسي GB82 WEST 1234 5698 7654 32:

  1. تحقق من طول الرقم حسب الدولة: رقم IBAN البريطاني يتكون من 22 حرفًا. ✓
  2. انقل الأحرف الأربعة الأولى إلى النهاية: WEST12345698765432GB82.
  3. استبدل كل حرف برقمين (A = 10 … Z = 35): W→32، E→14، S→28، T→29، G→16، B→11، ليصبح الناتج 3214282912345698765432161182.
  4. اقسم ذلك العدد على 97. يجب أن يكون الباقي بالضبط 1 — وهذا ما حدث.

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

عناوين العملات المشفرة: تُبنى رموز التحقق من المطابقة من الهاشات

تضع عناوين البيتكوين والإيثيريوم معاييرًا أعلى، لأن أي خطأ في كتابتها يؤدي إلى إرسال الأموال إلى شخص غير موجود بشكل دائم. تستخدم عناوين البيتكوين القديمة (1…، 3…) بروتوكول Base58Check: حيث يتم معالجة بيانات العنوان عبر خوارزمية SHA-256 مرتين، ثم تُضاف أول أربعة بايتات من النتيجة كرمز تحقق من المطابقة. أي حرف خاطئ واحد يغير الهاش بالكامل، لذا فإن احتمال تجاوز الخطأ دون اكتشافه يبلغ حوالي واحد من كل أربعة مليارات. أما العناوين الجديدة من نوع bc1… فتستخدم بروتوكول Bech32 أو Bech32m، وهو رمز تصحيح أخطاء يضمن اكتشاف أي خطأ يمس حتى أربعة أحرف. أما بروتوكول EIP-55 الخاص بالإيثيريوم فيخفي رمز التحقق من المطابقة ضمن نمط الأحرف الكبيرة والصغيرة.

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

نظرة سريعة على المخططات

المخططيُستخدم بواسطةيكتشفاحتمال تجاوز خطأ عشوائي
خوارزمية لون (مقسوم على 10)بطاقات الائتمان والخصم، ورقم IMEI، والعديد من بطاقات الهوية الوطنيةكل خطأ في رقم واحد ومعظم عمليات تبديل الأحرف المتجاورةحوالي 1 من كل 10
ISO 7064 مقسوم على 97-10رقم IBAN، وبعض أرقام الضرائب وأرقام الشركاتكل خطأ فردي وكل عملية تبديل في الأحرفحوالي 1 من كل 97
مجموع مرجّح، mod 10 أو 11ISBN-10، ورقم CPF البرازيلي، ورقم PESEL البولندي، والعديد من الهوياتالأخطاء الفردية ومعظم عمليات تبديل الأحرفحوالي 1 من كل 10 أو 1 من كل 11
Base58Check (SHA-256 مزدوج، 4 بايت)عناوين بيتكوين القديمة (1…، 3…)أي خطأ في الكتابة، وباحتمالية كبيرة جدًاحوالي 1 من كل 4 مليارات
Bech32 / Bech32m (رمز BCH)عناوين Bitcoin SegWit و Taproot (bc1…)مضمون: أي خطأ يؤثر على ما يصل إلى 4 أحرفأقل من 1 من بين مليار
EIP-55 (تحويل حالة keccak-256)عناوين Ethereumأخطاء إملائية، بسبب نمط الحروف الكبيرة والصغيرةمنخفض جدًا للمدخلات ذات الحروف المختلطة

لماذا يجب أن يعمل أداة التحقق على جهازك؟

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

الأسئلة الشائعة

هل يعني وجود مجموع تحقق صحيح أن الرقم حقيقي أو نشط؟

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

ما مدى احتمالية أن يمر رقم خاطئ؟

يعتمد الأمر على النظام المستخدم؛ فرقم التحقق من نوع mod-10 يسمح بمرور خطأ عشوائي واحد تقريبًا من كل 10 أخطاء؛ بينما يسمح نظام IBAN من نوع mod 97 بمرور خطأ واحد تقريبًا من كل 97 خطأ؛ ورقم التحقق من نوع Base58Check الذي يتكون من 4 بايت يسمح بمرور خطأ واحد تقريبًا من كل 4 مليار خطأ. الخاصية المهمة هي أن جميع هذه الأنظمة تكتشف الأخطاء الشائعة التي يرتكبها البشر، مثل وجود رقم خاطئ أو تبديل رقمين.

لماذا لا تحتوي بعض المعرفات على رقم تحقق على الإطلاق؟

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

هل من الآمن لصق رقم بطاقتي أو هويتي في جهاز التحقق؟

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

ما الفرق بين رقم التحقق والبصمة التجزئة والتشفير؟

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