واضح آرشیو وب فارسی:سایت ریسک: فرمول تشخیص صحت کد ملی (کارت ملی شناسایی) farhad 110 15 بهمن 1387, 13:13سلام. این مطلب رو در چند سایت مختلف دیدم، اما هیچ کدام منبع یکسانی رو معرفی نکردند البته گفته شده که سازمان ثبت احوال کشور این فرمول رو ارائه داده. و اما اصل مطلب: همانطور که می دانید همه ارگانها و سازمانهای دولتی جمهوری اسلامی و شرکتهای تابعه موظف شده اند از این پس فیلد جدیدی در کنار مشخصات افراد به نام کد ملی درج نمایند و تقریبا همه هموطنان عزیز در حال حاضر کارت ملی را دارند. ولی ما به عنوان یک برنامه نویس وقتی در فرمی کد ملی را دریافت می کنیم چگونه از صحت کد وارد شده مطمئن شویم. سازمان ثبت احوال کشور در راستای ارائه کارت ملی روشی را برای تولید کدهای ملی استفاده نموده است که با استفاده از آنها می توانیم کدهایی داشته باشیم که از امنیت بالایی برخوردار باشند و همچنین قابلیت تقلب نداشته باشند. همه کدهای ملی ۱۰ رقمی هستند. کدهای ملی که همه ارقام آنها مثل هم باشند معتبر نیستند مثل: ۰۰۰۰۰۰۰۰۰۰ ۱۱۱۱۱۱۱۱۱۱ ۲۲۲۲۲۲۲۲۲۲ ۳۳۳۳۳۳۳۳۳۳ ۴۴۴۴۴۴۴۴۴۴ ۵۵۵۵۵۵۵۵۵۵ ۶۶۶۶۶۶۶۶۶۶ ۷۷۷۷۷۷۷۷۷۷ ۸۸۸۸۸۸۸۸۸۸ ۹۹۹۹۹۹۹۹۹۹ روش اعتبار سنجی کد ملی : دهمین رقم شماره ملی را ( از سمت چپ ) به عنوان A در نظر می گیریم. یک مقدار B در نظر می گیریم و آن را برابر با = (اولین رقم * ۱۰) + ( دومین رقم * ۹ ) + ( سومین رقم * ۸ ) + ( چهارمین رقم * ۷ ) + ( پنجمین رقم * ۶) + ( ششمین رقم * ۵ ) + ( هفتمین رقم * ۴ ) + ( هشتمین رقم * ۳ ) + ( نهمین رقم * ۲ ) قرار می دهیم. مقدار C را برابر با = B – (B/11)*11 قرار می دهیم. اگر مقدار C برابر با صفر باشد و مقدار A برابر C باشد کد ملی صحیح است. اگر مقدار C برابر با ۱ باشد و مقدار A برابر با ۱ باشد کد ملی صحیح است. اگر مقدار C بزرگتر از ۱ باشد و مقدار A برابر با ۱۱ – C باشد کد ملی صحیح است. در پایان یک نمونه کد جاوا اسکریپت جهت چک کردن کد ملی تقدیم می گردد // function checkMelliCode(varmellicode) { var meli_code; meli_code=varmellicode.value; if (meli_code.length == 10) { if(meli_code==’1111111111′ || meli_code==’0000000000′ || 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(”کد ملی صحیح نمی باشد”); objcode.focus(); return false; } 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)) { return true; } else { alert(”کد ملی صحیح نمی باشد”); objcode.focus(); return true; } } else { return true; } کد بالا رو در دلفی پیاده سازی کردم و به صورت dll تهیه کردم که میتونید از لینک زیر دریافت کنید: Size: 395 KB این هم تعریف تابع که ورودی اون کد ملی هست و در صورتی که کد وارد شده معتبر باشه true رو به عنوان نتیجه برمیگردونه: function chek_Code(code: string): Boolean; موفق باشید Silver PC 28 شهريور 1388, 13:45سلام ! میدونم این پست مال خیلی وقته ولی این dll رو من نمیتونم دانلود کنم ! کسی که دان کرده میتونه لطف کنه پیوستش کنه ؟! ممنون Silver PC 28 شهريور 1388, 14:49و یه خواهش دیگه اگه میشه سورسشو بارید ! ممنون L-B 28 شهريور 1388, 20:06خدمت دوستان farhad 110 07 مهر 1388, 18:04سلام ! میدونم این پست مال خیلی وقته ولی این dll رو من نمیتونم دانلود کنم ! کسی که دان کرده میتونه لطف کنه پیوستش کنه ؟! ممنون سلام. لینک مشکلی نداره و یه خواهش دیگه اگه میشه سورسشو بارید ! ممنون سورس جاوا اسکریپتش رو گذاشتم، زحمت تبدیلش به بقیه زبانها با شما موفق باشید Silver PC 11 مهر 1388, 15:34سلام ! ممنون ! من منظورم این بود که سورس این dll که شما با دلفی نوشتید رو لطف کنید ! تشکر !
این صفحه را در گوگل محبوب کنید
[ارسال شده از: سایت ریسک]
[مشاهده در: www.ri3k.eu]
[تعداد بازديد از اين مطلب: 8271]