الگوریتم صحت کد ملی
ما در این مقاله می خواهیم به شما الگوریتم صحت کدملی را آموزش دهیم. احتمالا برای شما هم پیش آمده است که بخواهید در ورود یا ثبت نام در سیستم خوداز کدملی افراد استفاده کنید. پس با ما همراه باشید.
کارت شناسایی ملی یا به اختصار کارت ملی نشان دهنده هویت فرد است و هر کارت متعلق به یک شخص می باشد و هر شخص شماره ملی منحصر به فردی برای خود دارد.
کدملی هرفرد منحصر به فرد است و روش خوبی برای لاگین و رجیستر با توجه به نوع سیستم می باشد. معمولا سامانه های دولتی، اتوماسیون های اداری، سازمانهای بزرگ و سیستم های خصوصی امنیتی بیشتر از این روش برای ورود و ثبت نام خود استفاده می کنند.
ولی به صورت کلی نیز کد ملی بخاطر یکتا بودن روش خوبی برای لاگین کاربر است اما الگوریتم واحد و مشخصی برای تشخیص درستی و صحت کد وارد شده موجود نیست.
اما در این مقاله از بخش طراحی سایت رایانیتا می خواهیم بگوییم به چه نحوی الگوریتم تشخیص صحت کد ملی را پیاده سازی کنید. در ابتدا لازم است با ساختار کدملی آشنا شوید.
فهرست تیترهای این مقاله
- ساختار کدملی
- کد ملی واقعی
- کد ملی فیک
- تشخیص صحت کد ملی
- الگوریتم تعیین صحت کد ملی
- قطعه کدهای برنامه تشخیص صحت کد ملی
- نتیجه: کد ملی، روش مناسب احراز هویت کاربر
ساختار کدملی
کد ملی 10 رقم است و می تواند استان و شهر محل صدور شما را نشان دهد. سه رقم اول کدملی نشان دهنده شهر محل تولد شما می باشد به طور مثال 001 تا 009 متعلق به شهر تهران می باشد. 6 رقم بعدی کد اختصاصی و منحصر به فرد هر شخص است ودر نهایت رقم آخر، یک رقم کنترلی است که از روی ۹ رقم اول حاصل میشود.
کد ملی واقعی
کد ملی در ایران یک شناسه 10 رقمی است که از بدو تولد به هر شخص حقیقی تعلق می گیرد. که از سه بخش کد شهرستان محل تولد (سه رقم سمت چپ) 6 رقم اختصاصی که این بخش برای هر فردی منحصر بفرد بوده همچنین به فامیلی فرد نیز مرتب می باشد. رقم آخر نیز رقم کنترلی می باشد.
از طریق محسبات ریاضی و مقایسه نتیجه با رقم کنترلی می توان به اینکه ما یک کدملی واقعی یا یک کد ملی فیک داریم پی ببریم. بدین صورت که پس از انجام اعمال ریاضی که در ادامه بصورت کامل توضیح دادیم. اگر جواب نهایی صفر یا یک بوده باید با رقم کنترلی یکسان باشد. در غیر این صورت اگر باقی مانده تفریق جواب ما از عدد 11 با رقم کنترلی یکسان باشد. ما یک کد ملی واقعی داریم.
کد ملی فیک
به زبان خیلی ساده هر کد ملی که واقعی نباشد و توسط اداره ثبت احوال ایجاد نشده باشد. کد ملی فیک است. به بیانی دیگر در صورتی به از انجام اعمال ریاضی مربوطه که در ادامه به آن می پردازیم. در صورت عدم تطابق حاصل نهایی با رقم کنترلی کد ملی مذکور یک کد ملی فیک می باشد.
متاسفانه امروزه تعداد جرایم مربوط به استفاده از کد ملی فیک به منظور سو استفاده از سوی افراد سود جو افزایش یافته است. به همین دلیل با توجه به رشد اینترنتی کسب کارها به شدت باید حین ثبت نام ها و خریدهای آنلاین صحت کد ملی بررسی شود و مراقب این موضوع باشید.
مجازات استفاده از کد ملی فیک
در صورت استفاده از کد ملی فیک یا جعل آن طبق قانون فرد می توان از شش ماه تا سه سال حبس محکوم شود. یا به پرداخت جزای نقدی از سه تا هجده میلیون ریال محکوم گردد.
ادامه این مطلب را برای شناخت بهتر کد ملی واقعی مطالعه نمایید.
تشخیص صحت کد ملی
شما برای تشخیص صحت کد ملی می توانید به یکی از سه روش زیر اقدام نمایید.
1- اعمال ریاضی
معمول ترین راه تشخیص صحت کدملی که در واقع تنها راه تشخیص می باشد. استفاده از اعمال ریاضی می باشد. که این روش بیشتر برای تشخیص تعداد محدودی از کد های ملی کارایی دارد. در صورت نیاز به بررسی کدهای ملی متعدد پیشنهاد می کنیم یا از الگوریتم تعین صحت کد ملی استفاده نمایید. یا از طریق لینک دهی و یکی از سیستم های آنلاین مانند بیمه دانا بررسی صحت را انجام دهید.
2- سیستم های آنلاین تشخیص کد ملی واقعی
امروزه با توجه اهمیت کد ملی و نیاز به تشخیص کد ملی واقعی و فیک از یک دیگر سایت ها و اپلیکیشن های متعددی هستند. که این کار را برای شما راحت کردند و بجای نیاز به محاسبه دستی می توانید با مراجعه به یکی از این سایت ها یا اپلیکیشن های موجود و وارد کردن کد ملی مورد نظر از اصالت ان مطمئن شوید. برای مثال می توانید از اپلیکیشن استعلام کد ملی یا سامانه استعلام استفاده نمایید.
3- استعلام کد ملی مراجع دولتی
راه دیگری که برای تشخیص صحت کد ملی وجود دارد. اما بیشتر مختص نهاد ها و سازمان ها مخصوصا دولتی می باشد. استعلام کد ملی از سازمان ثبت احوال کشور می باشد. از این طریق علاوه بر بررسی صحت کد ملی می توانید به اطلاعات جزئی تری نسبت به کد ملی مورد نظر دسترسی داشته باشید. البته استفاده از این روش نیازمند مجوز رسمی از قوه قضاییه بود که همان طور که گفتیم بیشتر مختص سازمان ها و نهاد های دولتی است.
الگوریتم تعیین صحت کد ملی
اگر می خواهید از کدملی برای سیستم خود استفاده کنید لازم است که حتما موقع ثبت کد ملی از صحت کدملی اطمینان حاصل نمایید. الگوریتم تشخیص صحت کدملی که در ادامه توضیح داده شده است می تواند به شما در این موضوع کمک کند.
الگوریتم صحت کد ملی
درسیستم شماره ملی قبل از کد تعدادی صفر موجود است. به طور شفاف تر یعنی ممکن است رقم اول و دوم کدملی صفر باشد.
و به همین دلیل ممکن است دو خطا رخ بدهد یکی از سمت مکاربر که صفرها را وارد نکند و دوم از سمت سیستم که صفرها را ذخیره نکند.
پس گام اول: چک کردن طول کد ملی
اگر طول کد ملی کوچکتر از 10 و بزرگتر مساوی 8 بود، یعنی به فرمت زیر بود:
10>طول کد ملی>=8
اگر شماره کد وارد شده به صورت فوق بود نیاز است که به تعداد مورد نیاز به قبل از کد رقم صفر اضافه کنید.
گام دوم: محاسبه رقم کنترل کد ملی
برای محاسبه رقم کنترل مراحل زیر را انجام دهید.
- هر رقم را ضربدر موقعیتش کنید و پاسخ ها را با هم جمع ببندید. (طبق تصویر فوق: مجموع هر رقم * موقعیت)
- حاصل مجموع را بر 11 تقسیم کنید.(11/مجموع هر رقم * موقعیت)
- باقیمانده را بررسی کنید اگر بالاتر از دو بود 11 منهای باقیمانده همان عدد کنترلی مد نظر شماست و اگر کمتر از عدد 2 بود عدد کنترلی همان باقیمانده می باشد :
- باقیمانده از 2 کمتر بود => رقم کنترل = باقیمانده
- اگر باقیمانده بیشتر از 2 بود => رقم کنترل= باقیمانده – 11
مثال:
بیاید با مثالی این موضوع را ساده تر درک کنیم. به عنوان مثال کد ده رقمی ۷۷۳۱۶۸۹۹۵۱ را با هم چک کنیم ببینیم آیا این اعداد یک کد ملی واقعی هستند یا خیر؟
ساختار کد ملی | ||||||||||
ساختار کد | رقم کنترل | ۹ رقم سمت چپ کد ملی | ||||||||
ارقام کد | ۱ | ۵ | ۹ | ۹ | ۸ | ۶ | ۱ | ۳ | ۷ | ۷ |
موقعیت | ۱ | ۲ | ۳ | ۴ | ۵ | ۶ | ۷ | ۸ | ۹ | ۱۰ |
محاسبه حاصل ضرب | ۱۰ | ۲۷ | ۳۶ | ۴۰ | ۳۶ | ۷ | ۲۴ | ۶۳ | ۷۰ |
حاصل جمع ضرب ارقام ۲ الی ۱۰ را در موقعیت آنها محاسبه می کنیم
۷*۱۰+۷*۹+۳*۸+۱*۷+۶*۶+۸*۵+۹*۴+۹*۳+۵*۲=۳۱۳
۳۱۳÷۱۱=۲۸ و R=5
باقیمانده بزرگتر مساوی عدد 2 می باشد پس عدد کنترلی برابر است با (5-11) که برابر است با 6 .
رقم کنترلی =6
با توجه به قطعه کدهایی که در ادامه مطلب الگوریتم صحت کد ملی در این مقاله رایانیتا آمده است رقم کنترل ورودی 1 می باشد که با عدد محاسبه شده برابر نیست پس این کدملی، کد ملی درستی نمی باشد.
بریم آشنا بشیم با قطعه کدهای مربوطه به این الگوریتم.
قطعه کدهای برنامه تشخیص صحت کد ملی
در این قسمت به قطعه کد JavaScript و PHP قرارداده شده است و می توانید به راحتی از آنها استفاده کنید.
اگر در حین پیاده سازی به مشکل برخوردید، می توانید با کارشناسان ما برای راهنمایی بیشتر تماس حاصل فرمایید و یا درخواست مشاوره رایگان ثبت نمایید.
قطعه کد JavaScript الگوریتم صحت کدملی
قطعه کد PHP الگوریتم صحت کدملی
کلاس PHP الگوریتم صحت کدملی
استفاده از کدها
نتیجه: کد ملی، روش مناسب احراز هویت کاربر
کارت ملی در ایران به تمامی افراد الای 15 سال دارای شناسنامه عکس دار به عنوان یک کارت هویتی تعلق می گیرد.کد ملی یک کد یکتا است .
با گسترش روزافزون تکنولوژی،یکی از دغدغههای کسب وکارهای آنلاین، احراز هویت کاربران و جلوگیری از ورود افراد متفرقه و اصطلاحا اکانت ها فیک است. استفاده از کد ملی می تواند راهکاری مناسب باشد.
توزیع کارت هوشمند ملی از سال 94 آغاز شد و برای احراز هویت استفاده می شود. قرار است کارت هوشمند ملی نیز برای احراز هویت آنلاین و پیشرفته استفاده شود.
درباره رایانیتا
رایانیتا ارائه دهنده انواع خدمات طراحی وبسایت، اپلیکیشن و دیجیتال مارکتینگ!
سایر نوشته های رایانیتامطالب زیر را حتما مطالعه کنید
طراحی سایت برای شرکت های فناور
شرکت برنامه نویسی با React
طراحی سایت مارکت پلیس فروش کالا
طراحی سایت مارکت پلیس خدماتی
نکات طراحی سایت مشتری محور
وقتی بهروزرسانیهای افزونه وردپرس اشتباه میشود چه باید کرد؟
17 دیدگاه
به گفتگوی ما بپیوندید و دیدگاه خود را با ما در میان بگذارید.
چجوری ۲۸ ر و منهای ۱۱ کردید که شد ۶؟؟؟؟؟؟؟؟؟؟ :O
جمشید عزیز، ۲۸ منهای ۱۱ نشده، ۳۱۳ ابتدا به ۱۱ تقسیم شده که پاسخ آن ۲۸ است.
سلام. توضیحات و مثالش دقیقا از روی وبسایتهایی کپی شده و همشون ناقصن.
سوالی دارم. میشه توضیح بفرمایین این R=5 از کجا اومده؟
اگه عدد 5 نهمین رقم کد ملی هست که مثال زدین پس به دست آوردن عدد 28 به چه درد میخورد؟
سلام دوست عزیز
عدد ۲۸ خارج قسمت تقسیم ۳۱۳ بر ۱۱ است و عدد ۵ هم باقی مانده این تقسیم هستش و ارتباطی با جایگاه عدد ۵ در کد ملی ندارد.
لازم به ذکر است که تمامی مقالات رایانیتا با اصالت و بدون کپی هستند و این مقاله در تکمیل مقاله قبلی منتشر شده توسط تیم ما در سایت بلونا (برند قبلی رایانیتا) میباشد.
از اونجایی که 11 رو از خارج قسمت کم کردین پس اینطور استنباط میکنم که خارج قسمت تقسیم مهم هست نه باقیمانده. پس اون نوشته های بالا باید اینطوری تصحیح بشه:
اگر خارج قسمت از 2 کمتر بود => رقم کنترل = خارج قسمت
اگر خارج قسمت بیشتر از 2 بود => رقم کنترل= خارج قسمت – 11
درسته؟
البته تا اونجایی که بنده می دونم به نتیجه تقسیم خارج قسمت میگن.
به عبارتی 28*11 +5 = 313 که در اون 28 خارج قسمت هست و 5 باقیمانده.
بابا تقسیم کرده باقیمانده غیر اعشاریش شده پنج
سلام
ممنون بابت مطلب فوق العاده ای بود کلی اطلاعات بدست اوردم.
فقط یه سوال
اگر ما بخوایم داخل سیستم هایی مثل whmcs از این اعتبار سنجی استفاده کنیم کد اعتبارش به چه صورتی میشه ؟
فقط در این حد تونستیم تعریف کنیم که با کد اعتبار /^[0-9]{10}$/ کاربر میتونه فقط اعداد بین 0 تا 9 وارد کنه و همینطور حداکثر تعداد رقمش هم 10 رقم باشه. بقیه موارد که یه کد ملی رو بتونه کامل استعلام کنه به چه صورتی میشه ؟ ممنون میشم راهنمایی کنین .
پایتون :
x=input(‘kode==>’)
jame=0
for i in range(0,9): # 0,1,2,3,4,5,6,7,8,(9) /// 10,9,8,7,6,5,4,3,2,(1)
jame += (int(x[i]) * (10-i))
if jame % 11 2 and 11-(jame%11) == int(x[9]) :
print(‘dorost’)
else :
print(‘ghalat’)
سلام لطفا کد پایتون صحت کد ملی رو هم بذارید
ممنون
عددآخرکدملی ازکجابدست میاد؟
سلام
لطفا الگوریتم صحت سنجی کد ملی برای گوگل فرم هم آموزش دهید.
با تشکر
سلام
این جمله غلطه:
اگر باقیمانده بیشتر از 2 بود => رقم کنترل= باقیمانده – 11
باید بشه:
اگر باقیمانده بیشتر از 2 بود ===> باقیمانده = رقم کنترل– 11
در مثال:
موقعیت:10 * عدد:7=70 جمع:70
موقعیت:9 * عدد:7=63 جمع:133
موقعیت:8 * عدد:3=24 جمع:157
موقعیت:7 * عدد:1=7 جمع:164
موقعیت:6 * عدد:6=36 جمع:200
موقعیت:5 * عدد:8=40 جمع:240
موقعیت:4 * عدد:9=36 جمع:276
موقعیت:3 * عدد:9=27 جمع:303
موقعیت:2 * عدد:5=10 جمع:313
باقیمانده:5
عدد کنترلی سمت راست:1
فرمول: رقم کنترل– یازده = باقیمانده
11-1=10 که با باقیمانده یعنی 5 برابر نیست
با عرض پوزش
الان مجدد چک کردمجواب هر دو فرمول یکیه!
سه تا یکیه
یازده = عدد کنترلی + باقیمانده
بنظرم این بهتره
سلام
آیا کسی الگوریتم بررسی صحت کد فراگیر اتباع خارجی رو هم داره؟
کد نویسای مملکت مارو باش . بابا یه تقسیم کرده .
در نهایت نتیجه گرفته در حد سوم ابتدایی.
100 نفر میگن چی شد چی شد؟