کد ملی یکی از مهمترین شناسههای هویتی هر فرد در ایران است. در بسیاری از سیستمهای ثبتنام، درگاههای بانکی و سامانههای دولتی، کاربر باید کد ملی خود را وارد کند. اما آیا یک کد ملی ۱۰ رقمی تصادفی معتبر است؟ پاسخ خیر است. کد ملی دارای یک رقم کنترلی (Check Digit) در انتهاست که با یک فرمول ریاضی مشخص بررسی میشود.
میخواهید سریع کد ملی را چک کنید؟
با ابزار رایگان ما در کسری از ثانیه صحت هر کد ملی را بررسی کنید.
اعتبارسنجی کد ملیساختار کد ملی
کد ملی از ۱۰ رقم تشکیل شده است. سه رقم اول نشاندهنده محل صدور (کد شهر)، شش رقم بعدی شماره سریال و رقم دهم به عنوان رقم کنترلی محاسبه میشود. برای اینکه یک کد ملی معتبر باشد، نباید تمام ۱۰ رقم آن با هم یکسان باشند (مثلاً 1111111111 یا 2222222222 نامعتبر است).
فرمول محاسبه رقم کنترلی
برای بررسی صحت کد ملی، از ۹ رقم اول استفاده میکنیم. الگوریتم به این شکل است:
- هر رقم را از چپ به راست در وزن خودش ضرب میکنیم (رقم اول در ۱۰، رقم دوم در ۹، ... و رقم نهم در ۲).
- مجموع حاصلضربها را حساب میکنیم.
- مجموع را بر ۱۱ تقسیم میکنیم و باقیمانده را به دست میآوریم.
- اگر باقیمانده کمتر از ۲ باشد، رقم کنترلی برابر با همان باقیمانده است.
- اگر باقیمانده بیشتر از ۲ (یا مساوی ۲) باشد، رقم کنترلی برابر است با (۱۱ منهای باقیمانده).
مثال عملی
کد ملی 0499370899 را در نظر بگیرید. رقم آخر (9) باید با محاسبات ما برابر باشد:
(0×10) + (4×9) + (9×8) + (9×7) + (3×6) + (7×5) + (0×4) + (8×3) + (9×2) = 328
328 ÷ 11 = 29 و باقیمانده ۹
چون باقیمانده (۹) بزرگتر از ۲ است: ۱۱ - ۹ = ۲
در این مثال، محاسبه ما عدد ۲ را نشان میدهد که با رقم آخر (۹) برابر نیست، پس این کد ملی نامعتبر است!
چرا اعتبارسنجی سمت کاربر (Client-Side) مهم است؟
اگر شما یک برنامهنویس وب هستید، حتماً قبل از ارسال اطلاعات به سرور، کد ملی را در سمت کاربر (با جاوااسکریپت یا پایتون) اعتبارسنجی کنید. این کار باعث میشود:
- ترافیک اضافی به سرور وارد نشود.
- کاربر سریعتر متوجه اشتباه خود شود.
- از حملات Spam و ثبتنامهای جعلی جلوگیری شود.