تشخیص صحت شماره کارت های بانکی و اعتباری

امروزه در اکثر نرم افزارهای تولیدی نیاز به استفاده از شماره کارت های اعتباری یا کارت های بانکی برای پرداخت یک سری از  مزایا یا کمک های غیر نقدی  برای پرسنل و یا افراد تحت پوشش شرکت های و موسسات مختلف می باشد.

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

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

شماره روی کارت های اعتباری یا کارت های بانکی شماره ای است 16 رقمی که از سمت چپ رقم اول بیانگر نوع یا کاربرد کارت (برای کارت های بانکی و اعتباری این رقم می تواند 4 یا 5 یا 6 باشد ) و 5 رقم بعدی بیانگر شماره شناسایی صادر کننده کارت و ارقام 7 تا 15 بیانگر شماره حساب یا شماره منحصر به فرد در مرکز صادرکننده کارت و رقم آخر آن هم یک رقم کنترل است که از روی 15 رقم سمت چپ بدست می آید. برای بررسی کنترل کد کافی است مجدد از روی 15 رقم سمت چپ صحت رقم کنترل را محاسبه کنیم

ساختار  شماره کارت ها در زیر نشان داده شده است

ساختار کد 16 رقمی کارت های بانکی و اعتباری

ارقام کد رقم کنترل شماره منحصر به فرد در مرکز صادر کننده کارت برای شناسه صادر کننده نوع كارت
موقعیت

16

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
 

1- برای محاسبه رقم کنترل از روی سایر ارقام ، از سمت چپ و با شروع از موقعیت 1 تا موقعیت 16 ، ارقام موقعیت فرد را در 2 و ارقام موقعیت زوج را در یک ضرب می کنیم، اگر حاصل ضرب هر مرحله بیشتر از  9 شد  9 واحد از آن کم کنید  تا یک رقمی شود و سپس اعداد حاصل را با هم جمع می کنیم.

2- اگر عدد حاصل از اجرای مرحله یک بر 10 بخش پذیر باشد ، شماره کارت صحیح قلمداد می شود  در غیر اینصورت شماره کارت صحیح نمی باشد

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

برای این منظور

ساختار کد 16 رقمی کارت های بانکی و اعتباری

ارقام کد رقم کنترل شماره منحصر به فرد در مرکز صادر کننده کارت برای دارنده کارت شناسه صادر کننده نوع كارت
موقعیت

16

15 14 13 12 11 10 9 8 7 6 5 4 3 2 1
ارقام کارت

2

4 7 3 7 4 5 0 0 9 2 1 4 7 2 6
الگوی ضرب

1

2 1 2 1 2 1 2 1 2 1 2 1 2 1 2
محاسبه حاصل ضرب 2 8 7 6 7 8 5 0 0 9 2 2 4 5 2 3
 
 

حاصل جمع ضرب ارقام کارت در الگوی مورد نظر  رابا توجه به روش گفته شده محاسبه می کنیم این حاصل جمع در زیر آمده است. ضمنا چون رقم کنترل را نیز باید در انتهای کار  به حاصل جمع  مورد نظر اضافه کنیم برای راحتی رقم کنترل را نیز در یک ضرب کرده و به مجموع می افزاییم. پس الگوی ضرب به صورت 16 رقمی  2121212121212121  خواهد بود که هر رقم از الگو در رقم همو موقعیت آن از شماره کارت ضرب می شود ( در هر مرحله  چنانچه حاصلضرب رقم الگو ضرب در  رقم کارت  بیشتر از 9 بود 9 واحد از نتیجه حاصلضرب  کسر می کنیم). در زیر 16 مورد ضرب الگو در 16 رقم شماره کارت مورد بررسی در این مثال ،نمایش داده شده است

6*2=12   -> 12-9=3
2*1=2
7*2=14   -> 14-9=5
4*1=4
1*2=2
2*1=2
9*2=18 ->18-9=9
0*1=0
0*2=0
5*1=5
4*2=8
7*1=7
3*2=6
7*1=7
4*2=8
2*1=2

8+7+6+7+8+5+0+0+9+2+2+4+5+2+3+2=70

چون 70 بر 10 بخش پذیر است پس شماره کارت معتبر می باشد

برای بررسی صحت شماره کارت  ، کد 16 رقمی کارت بانکی یا اعتباری مورد نظر  را در زیر وارد کرده و بر روی دکمه کنترل شماره کارت  کلیک کنید.

کنترل صحت شماره کارت های بانکی و اعتباری
کد 16 رقمی کارت مورد نظر را وارد کنید
 

واژگان:  تشخیص صحت شماره کارت، کارت بانکی ،کارت اعتباری، الگوریتم تشخیص

علي آرش آذر 1391
Email: admin@are.ir , admin@aliarash.com