تاریخ امروز:11 آذر 1400
الگوریتم تشخصی کد ملی

الگوریتم تشخیص صحت کد ملی

در این مقاله می خواهیم به شما طریقه تشخیص صحت کد ملی را که ممکن است در زبانهای برنامه نویسی مختلف و در فرمهای ورود اطلاعات مورد نیاز شما باشد را آموزش دهیم .
همانطور که می دانید همه ارگانها و سازمانهای دولتی جمهوری اسلامی و شرکتهای تابعه موظف شده اند از این پس فیلد جدیدی در کنار مشخصات افراد به نام کد ملی درج نمایند و تقریبا همه هموطنان عزیز در حال حاضر کارت ملی را دارند. ولی ما به عنوان یک برنامه نویس وقتی در فرمی کد ملی را دریافت می کنیم چگونه از صحت کد وارد شده مطمئن شویم ؟
سازمان ثبت احوال کشور در راستای ارائه کارت ملی روشی را برای تولید کدهای ملی استفاده نموده است که با استفاده از آنها می توانیم کدهایی داشته باشیم که از امنیت بالایی برخوردار باشند و همچنین قابلیت تقلب نداشته باشند.
همه کدهای ملی ۱۰ رقمی هستند و هیچگاه نمیشود اعداد آن یکسان باشد

روش اعتبار سنجی کد ملی :

دهمین رقم شماره ملی را ( از سمت چپ ) به عنوان A در نظر می گیریم.
یک مقدار B در نظر می گیریم و آن را برابر با :

(اولین رقم * ۱۰) + ( دومین رقم * ۹ ) + ( سومین رقم * ۸ ) + ( چهارمین رقم * ۷ ) + ( پنجمین رقم * ۶) + ( ششمین رقم * ۵ ) + ( هفتمین رقم * ۴ ) + ( هشتمین رقم * ۳ ) + ( نهمین رقم * ۲ )

قرار می دهیم.

مقدار Cرا برابر با B – (B/11)*11 قرار می دهیم.

اگر مقدار Cبرابر با صفر باشد و مقدار Aبرابر Cباشد کد ملی صحیح است.

اگر مقدار Cبرابر با ۱ باشد و مقدار Aبرابر با ۱ باشد کد ملی صحیح است.

اگر مقدار Cبزرگتر از ۱ باشد و مقدار A برابر با ۱۱ – Cباشد کد ملی صحیح است.

در پایان یک نمونه کد جاوا اسکریپت جهت چک کردن کد ملی تقدیم می گردد :

[javascript]<html>
<head>
<script type="text/javascript">
function checkMelliCode(meli_code)
{
if (meli_code.length == 10)
{
if(meli_code=='1111111111' || meli_code=='2222222222' || meli_code=='3333333333' || meli_code=='4444444444' || meli_code=='5555555555'  || meli_code=='6666666666'  || meli_code=='7777777777'  || meli_code=='8888888888'  || meli_code=='9999999999' )
{
alert(11);
}else{
c = parseInt(meli_code.charAt(9));
n = parseInt(meli_code.charAt(0))*10 + parseInt(meli_code.charAt(1))*9 + parseInt(meli_code.charAt(2))*8 + parseInt(meli_code.charAt(3))*7 + parseInt(meli_code.charAt(4))*6 + parseInt(meli_code.charAt(5))*5 + parseInt(meli_code.charAt(6))*4 + parseInt(meli_code.charAt(7))*3 + parseInt(meli_code.charAt(8))*2;
r = n - parseInt(n/11)*11;
if ((r == 0 && r == c) || (r == 1 && c == 1) || (r > 1 && c == 11 - r))
{
alert('sahih ast');
}
else
{
alert('sahih nist');
}
}
}

}
</script>
</head>
<body>
<font color="red"  style="cursor:pointer;" onclick="checkMelliCode('1234567891');">show</font>
</body>
</html>[/javascript]

5 Comments

    1. آواتار سروش طیبیسروش طیبی Post author پاسخ

      سلام
      جالبه. فکر میکنم اشتباه سیستم صدور باشه. چون الگوریتم کد ملی یه چیز ثابت هست که از طریق سازمان‌های مربوطه اعلام میشه.

      1. آواتار علیعلی پاسخ

        سلام
        من این الگوریتم را با چند تا فرمول ساده اکسل نوشتم و کد ۱۱۱۱۱۱۱۱۱۱ هم معتبر نشان میدهد

    2. آواتار یک دختریک دختر پاسخ

      چقدر جالب.
      فکرشو نمی کردم به این شماره وجود داشته باشه…
      مرسی که اطلاعاتمو زیاد کــــــــــــــــــــــردی!
      جالبه که سایت ها اشتباه میگیرن چون الگوریتم خاصی برای تشخیص کد وجود نداره و معمولا خودساخته هستن…
      بهتره الگوریتم رو درست کنن هــــــــــــــا!

  1. آواتار یک دختریک دختر پاسخ

    سلام.
    کاش کد پایتون اش رو هم میزاشتید…
    بیشتر کاربرد داره.
    امیدوارم بزارین…
    =(
    منتظرما!!!

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *