رمز تحقق Luhn mod N
مع الأبجدية abcdef تحصل السلسلة abcdef على رمز التحقق e، فيصبح الرمز المحمي abcdefe. يطبق Luhn mod N قاعدة المضاعفة والجمع الكلاسيكية في الأساس N، للرموز المكونة من حروف أو أرقام ست عشرية أو مجموعة محارف خاصة. مجاني في متصفحك.
- مجاني
- يعمل في متصفحك
- دون تسجيل
- بياناتك لا تغادر جهازك
شغّل الأداة مجانًا
مثال محلول
- النص
- abcdef
- الأبجدية
- abcdef
- وضع الحساب
- Compute
- الحمولة
- abcdef
- حرف التحقق
- e
- مع رقم التحقق
- abcdefe
خوارزمية Luhn الكلاسيكية تعمل على الأرقام 0–9 فقط. غالبًا ما تخلط المعرّفات الفعلية حروفًا وhex وBase36 أو مجموعة رموز خاصة، ومع ذلك تحتاج رمز تحقق أخير يلتقط أخطاء الكتابة. يعيّن Luhn mod N لكل رمز في أبجديتكم نقطة رمز، ويطبّق فكرة المضاعفة والجمع نفسها من اليمين إلى اليسار في الأساس N، ويعيد رمز تحقق من الأبجدية ذاتها. تحسب هذه القدرة ذلك الرمز لحملٍ ما، أو تتحقق من سلسلة كاملة تنتهي بالفعل برمز تحقق، وتفشل فورًا إذا احتوت المدخلات رموزًا خارج الأبجدية حتى لا تقبلوا بيانات تالفة بصمت. شغّلوها مجانًا في المتصفح أو استدعوا واجهة KIT بالسعر المنشور؛ كلا المسارين يستخدمان الحساب نفسه الخالص بلا شبكة وبلا قيم مخزّنة.
ما هو Luhn mod N وكيف يوسّع Luhn الكلاسيكي
تحمي خوارزمية Hans Peter Luhn الأصلية سلاسل الأرقام بالتناوب بعامل مضاعفة من اليمين، وطيّ القيم المضاعفة إلى رقم واحد، والجمع، واختيار رقم تحقق بحيث يكون الرقم الكامل متوافقًا مع الصفر modulo عشرة. تدعم تلك القاعدة بطاقات الدفع ونهايات IMEI والعديد من المعرّفات الوطنية، لكنها تفترض أن N يساوي عشرة وأن كل محرف رقم عشري.
يحافظ Luhn mod N على البنية نفسها ويسمح بأن يكون N حجم أي أبجدية مرتّبة تحدّدونها: يُقابل كل محرف نقطة رمز من صفر إلى N ناقص واحد، ويصبح طيّ القيمة مجموع أرقام الأساس N لعامل مضروبًا في نقطة الرمز، ويُعاد ربط النتيجة بمحرف من تلك الأبجدية. فضّلوا N زوجيًا عندما تهمّكم ضمانات الكشف الكلاسيكية؛ الأبجديات الفردية ما زالت تنتج رمز تحقق حتميًا لكنها تضعف تغطية الاستبدال والنقل المتجاور.
مقارنةً بـ Damm (أرقام فقط وجدول شبه مجموعة) وأرقام تحقق الباركود المرتبطة بتخطيطات EAN أو ISBN، يناسب Luhn mod N حين تكون رموزكم أبجدية رقمية أصلًا وتريدون مخططًا مشتركًا للإصدار والتحقق.
حالات الاستخدام
مراجعة أعمدة المعرّفات المصدَّرة
تحققوا دفعةً واحدة من كل رمز في CSV شريك أو تصدير مستودع، واعزلوا الصفوف التي لم يعد رمز تحققها يطابق القيمة المعاد حسابها لأبجديتكم.
الأسئلة الشائعة
ما رمز تحقق Luhn mod N؟
هو محرف أخير واحد يُحسب بخوارزمية Luhn المعمّمة على أبجدية بحجم N، بحيث تجعل أخطاء الكتابة الشائعة التحقق من السلسلة الكاملة يفشل.
كيف تتحول المحارف إلى أرقام؟
بحسب موضعها في الأبجدية التي تحددها: المحرف الأول قيمته 0، والتالي 1، وهكذا حتى N ناقص 1، حيث N هو طول الأبجدية. ومع abcdef تكون قيمة a هي 0 وقيمة f هي 5، وN يساوي 6.
لماذا يُفضَّل أن يكون عدد محارف الأبجدية زوجيًا؟
لأن N الزوجي يحافظ على قدرة الكشف في Luhn الكلاسيكي. أما الأبجدية الفردية فتعطي رمز تحقق ثابتًا ومتكررًا، لكنها تكشف عددًا أقل من المحارف الخاطئة المفردة ومن تبديل المحارف المتجاورة.
ماذا يحدث إذا احتوى الرمز على محرف خارج الأبجدية؟
تتوقف الأداة فورًا وتخبرك بدل أن تتجاوز المحرف أو تخمّن. وتحتاج الأبجدية نفسها إلى محرفين مختلفين على الأقل، فتُرفض المجموعة المكونة من محرف واحد.
كيف أتحقق من رمز ينتهي برمز تحققه؟
اختر وضع التحقق: يجب أن يتكون الرمز من محرفين على الأقل، ويُعد المحرف الأخير رمز التحقق. تعيد الأداة حساب المحرف المتوقع من الباقي وتبين هل يتطابقان.
أدوات ذات صلة
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/enc/luhn-mod-n \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"abcdef","alphabet":"abcdef"}'const res = await fetch("https://api.kit.forhosting.com/enc/luhn-mod-n", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "abcdef",
"alphabet": "abcdef"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/luhn-mod-n",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "abcdef",
"alphabet": "abcdef"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/luhn-mod-n", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"abcdef","alphabet":"abcdef"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"abcdef","alphabet":"abcdef"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/luhn-mod-n", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"text": "abcdef",
"alphabet": "abcdef"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.luhn_mod_n",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |
ملاحظات تقنية
ما هو Luhn mod N وكيف يوسّع Luhn الكلاسيكي
تسمّي الاستجابة دائمًا الخوارزمية luhn_mod_n حتى تسجّل السجلات والعقود أي مخطط حمى القيمة.
كيفية حساب رمز تحقق أو التحقق من سلسلة كاملة
قدّموا text كحمل بلا رمز تحقق لوضع compute (الافتراضي)، وalphabet كمجموعة مرتّبة من الرموز الصالحة. النص الفارغ والأبجدية الناقصة والأبجديات بأقل من محرفين مميّزين وقيم mode غير المعروفة تفشل قبل أي حساب ولا تُفوتر. استخدموا الأرقام 0123456789 لإعادة توليد بأسلوب Luhn mod-10 لأحمال رقمية فقط؛ و0-9A-Z لرموز منتجات بأسلوب Base36؛ ومجموعة داخلية حين يمنع مخزونكم أصلًا رموزًا ملتبسة مثل O و0. يعيّن المحرّك لكل محرف مميّز في الأبجدية نقاط رمز متتابعة، ويمرّ على الحمل من اليمين إلى اليسار، ويعيد check_character مع with_check (الحمل زائد ذلك المحرف). يتوقع وضع validate سلسلة كاملة من محرفين على الأقل؛ تُبلغ الاستجابة عن valid وcheck_character الأخير وexpected_check_character المعاد حسابه من البادئة وsubstring الحمولة payload دون المحرف الأخير حتى تعرض الواجهات تصحيحًا واضحًا. يجب أن يظهر كل رمز في text ضمن alphabet: إن وُجد محرف خارجها تفشل الدعوة بـ invalid_input وتسرد الرسالة تلك الرموز لتصحيح الأبجدية أو إزالة الضوضاء قبل إعادة المحاولة. لأن المسار parse خالص بلا ساعة أو عشوائية أو شبكة، يُنتج المدخل نفسه دائمًا JSON نفسه على أداة المتصفح المجانية وعلى API. بسعر $0.002 لكل طلب ناجح تحمون الاستيراد الجماعي وطابعات الملصقات ونماذج التسجيل دون باقة مخصّصة.
أين تناسب رموز تحقق Luhn المعمّمة الأنظمة الحقيقية
غالبًا ما تخلط ملصقات المستودعات والأصول حروفًا وأرقامًا ليقرأها العاملون بصوت عالٍ؛ وإلحاق رمز Luhn mod N يلتقط النقل المتجاور والاستبدال المفرد قبل أن يُنشئ مسح يدوي شحنة خاطئة. مفاتيح الترخيص وأكواد القسائم التي تستبعد أصلًا المحارف المربكة ما زالت تحتاج رقم سلامة رخيصًا يعيد الشركاء تنفيذه بلا سرّ مشترك؛ يكفي نشر الأبجدية وهذه الخوارزمية. لا تعاملوا تحققًا ناجحًا كإثبات تفويض أو ملكية — فهو يثبت فقط أن السلسلة سليمة الشكل تحت Luhn mod N لتلك الأبجدية، وهو معيار الأمانة نفسه لأي مجموع تحقق. برامج العضوية والولاء التي تجاوزت المعرّفات الرقمية فقط يمكنها الإبقاء على مسار إصدار واحد: توليد حمل متسلسل أو عشوائي في أبجدية المؤسسة، واستدعاء compute، وتخزين with_check، والتحقق في كل نموذج وملف شريك. تعيد مهام جودة البيانات حساب expected_check_character لكل صف في تصدير وتعزل الاختلافات، فتلتقط تعديلات بشرية وأخطاء مولّدات.
حالات التكامل
إصدار رموز منتجات أو أصول أبجدية رقمية
ولّدوا حملًا في أبجديتكم الداخلية، واستدعوا وضع compute، واحفظوا أو اطبعوا with_check حتى يحمل كل رمز جديد محرف Luhn mod N أخيرًا.
التحقق من الرموز المكتوبة أو الممسوحة عند الإدخال
عندما يرسل مستخدم أو ماسح سلسلة كاملة، استدعوا وضع validate وامنعوا البحث إذا كان valid يساوي false، مع إظهار expected_check_character لتصحيح خطأ كتابة واحد.
أسئلة تقنية
كيف أحسب رمز تحقق بهذه الـ API؟
أرسلوا POST مع text مساويًا للحمل وalphabet لمجموعتكم المرتبة وmode compute (أو احذفوا mode). تتضمن الاستجابة check_character وwith_check.
كيف أتحقق من سلسلة تتضمن رمز تحقق أصلًا؟
أرسلوا POST بالسلسلة الكاملة ونفس alphabet وmode validate. تتضمن الاستجابة valid وcheck_character وexpected_check_character وpayload دون المحرف الأخير.
ماذا يحدث إذا احتوى text رموزًا ليست في alphabet؟
تفشل الدعوة بـ invalid_input وتسرد رسالة الخطأ الرموز خارج الأبجدية. مهام التحقق الفاشلة لا تُفوتر.
هل أداة Luhn mod N مجانية؟
أداة المتصفح مجانية وتعمل محليًا. تستدعي واجهات API رصيد KIT مسبق الدفع بالسعر الأساسي المنشور $0.002؛ والمدخل غير الصالح لا يُحاسب أبدًا.