زمان جاری: 07-22-2014, 09:55 PM
خوش آمدید مهمان گرامی! (ورودعضویت)

ارسال پاسخ 
 
رتبه موضوع:
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
فرمول تشخیص صحت کد ملی (کارت ملی شناسایی)
07-02-2011, 02:18 PM (آخرین تغییر در این ارسال: 07-02-2011 02:34 PM توسط مهرداد عباسی.)
ارسال: #1
فرمول تشخیص صحت کد ملی (کارت ملی شناسایی)
سلام. این مطلب رو در چند سایت مختلف دیدم، اما هیچ کدام منبع یکسانی رو معرفی نکردند البته گفته شده که سازمان ثبت احوال کشور این فرمول رو ارائه داده. و اما اصل مطلب:

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

سازمان ثبت احوال کشور در راستای ارائه کارت ملی روشی را برای تولید کدهای ملی استفاده نموده است که با استفاده از آنها می توانیم کدهایی داشته باشیم که از امنیت بالایی برخوردار باشند و همچنین قابلیت تقلب نداشته باشند.

همه کدهای ملی ۱۰ رقمی هستند.

کدهای ملی که همه ارقام آنها مثل هم باشند معتبر نیستند مثل:

۰۰۰۰۰۰۰۰۰۰
۱۱۱۱۱۱۱۱۱۱
۲۲۲۲۲۲۲۲۲۲
۳۳۳۳۳۳۳۳۳۳
۴۴۴۴۴۴۴۴۴۴
۵۵۵۵۵۵۵۵۵۵
۶۶۶۶۶۶۶۶۶۶
۷۷۷۷۷۷۷۷۷۷
۸۸۸۸۸۸۸۸۸۸
۹۹۹۹۹۹۹۹۹۹

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

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

یک مقدار B در نظر می گیریم و آن را برابر با =

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

قرار می دهیم.


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


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

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

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


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


کد PHP:
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;
}
parseInt(meli_code.charAt(9));
parseInt(meli_code.charAt(0))*10 +
parseInt(meli_code.charAt(1))*+
parseInt(meli_code.charAt(2))*+
parseInt(meli_code.charAt(3))*+
parseInt(meli_code.charAt(4))*+
parseInt(meli_code.charAt(5))*+
parseInt(meli_code.charAt(6))*+
parseInt(meli_code.charAt(7))*+
parseInt(meli_code.charAt(8))*2;
parseInt(n/11)*11;
if ((
== && == c) || (== && == 1) || (&& == 11 r))
{
return 
true;
}
else
{
alert(”کد ملی صحیح نمی باشد”);
objcode.focus();
return 
true;
}
}
else
{
return 
true;




لینک دریافت کلاس به زبان php کد هایی برای تشخیص صحت کد ملی با جاوا اسکریپت نوشته شده اند، خوبی این کلاس این است که با php نوشته شده و امکان دور زدن آن وجود ندارد.

You are not allowed to view links. Register or Login to view.

دانلود فایل نمونه تشخیص صحت ملی
You are not allowed to view links. Register or Login to view.
دانلود تابع در قالب xla
You are not allowed to view links. Register or Login to view.

[تصویر: www.Mojsazan.com.gif]
مشاهده سایت کاربر یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در پاسخ
 تشکر شده توسط : ehsan.eba
07-02-2011, 02:30 PM (آخرین تغییر در این ارسال: 07-02-2011 02:30 PM توسط مهرداد عباسی.)
ارسال: #2
RE: فرمول تشخیص صحت کد ملی (کارت ملی شناسایی)
همان طور كه مي دانيد كد ملي از 10 رقم تشكيل شده كه سه رقم اول مربوط به كد شهرستان 6 رقم دوم يه عدد منحصر به فرد هست و رقم آخر هم براي تاييد صحت كد ملي مورد استفاده قرار مي گيره حالا من مي خوام كد شهرستان هاي مختلف رو در يك ليست جمع آوري كنم

توجه كنيد در تهران همه متولدين سال 68 اولشون 001 هست بلااستثنا یا اصفهان 67 68 ها همگی 127 می باشند
پس اين يه ربطيم به سال تولد بايد داشته باشه


شيراز=229،230
تهران=001،004،006،007،008
آمل=214
نور=625
جهرم= 246
تبريز =138
هشترود ميانه مراغه =136
زاهدان= 611
127 اصفهان
128 اطراف اصفهان
چادگان-اصفهان 575
تیران وکرون-اصفهان 549
نجف آباد-اصفهان 109
رشت 258
قزوین، 432
175 اهواز
مشهد=092
ساری=208
فیروز کوه=043
236 برا کازرون


You are not allowed to view links. Register or Login to view.

[تصویر: www.Mojsazan.com.gif]
مشاهده سایت کاربر یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در پاسخ
 تشکر شده توسط : مهدی ابراهیمی ehsan.eba
04-22-2012, 04:42 PM
ارسال: #3
RE: فرمول تشخیص صحت کد ملی (کارت ملی شناسایی)
سلام مهرداد جان
ممنون از مطلب خوبی که ارائه دادی . ولی من یه سوال داشتم و این هم این است که منظورت از این که سه رقم اول کد ملی به سال تولد ربط داره چیه ؟
اگر می شه توضیحات بیشتری بدهید.
ممنون
یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در پاسخ
04-22-2012, 06:53 PM
ارسال: #4
RE: فرمول تشخیص صحت کد ملی (کارت ملی شناسایی)
در شهر ها مختلف عدد ها هماهنگی ندارند در طی تحقیقات متوجه شدیم که سال تولد در عدد شروع تاثیر دارد در بعضی شهر ها

[تصویر: www.Mojsazan.com.gif]
مشاهده سایت کاربر یافتن تمامی ارسال‌های این کاربر
نقل قول این ارسال در پاسخ
ارسال پاسخ 


موضوعات مشابه ...
موضوع: نویسنده پاسخ: بازدید: آخرین ارسال
  لیست فرمول های ریاضی ehsan.eba 3 1,129 04-21-2012 10:16 PM
آخرین ارسال: ehsan.eba
  کارت گرافيکي بيسيم مهرداد عباسی 0 673 01-15-2011 04:59 PM
آخرین ارسال: مهرداد عباسی

پرش در انجمن: