银行信用卡号验证初探银行信用卡号验证初探
/*5、当你输入信用卡号码的时候,有没有担心输错了而造成损失呢,其实可以不必这么担心,因为并不是一个随便的信用卡号码都是合法的,它必须通过Luhn算法来验证通过。
该校验的过程:
1、从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。
2、从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去9),再求和。
3、将奇数位总和加上偶数位总和,结果应该可以被10整除。
例如,卡号是:1
则奇数、偶数位(用红色标出)分布:1
奇数位和=35
偶数位乘以2(有...
银行信用卡号验证初探
/*5、当你输入信用卡号码的时候,有没有担心输错了而造成损失呢,其实可以不必这么担心,因为并不是一个随便的信用卡号码都是合法的,它必须通过Luhn算法来验证通过。
该校验的过程:
1、从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。
2、从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去9),再求和。
3、将奇数位总和加上偶数位总和,结果应该可以被10整除。
例如,卡号是:1
则奇数、偶数位(用红色标出)分布:1
奇数位和=35
偶数位乘以2(有些要减去9)的结果:1 6 2 6 1 5 7 7,求和=35。
最后35+35=70 可以被10整除,认定校验通过。
请编写一个程序,从键盘输入卡号,然后判断是否校验通过。通过显示:“成功”,否则显示“失败”。
比如,用户输入:
程序输出:成功*/
/*交流讨论信箱:askrsw@qq.com*/
#include
#include
#include
int main(int argc,char** argv) {
while(true)
{
char szNumber[128] = {0};
printf("Please input the bank number(0 to exit):");
scanf("%s",szNumber);
if(szNumber[0]=='0')
break;
int nLen = strlen(szNumber);
int nEvenSum=0,nOddSum=0;
if(nLen%2==0)
{
for(int i=0;i=10?tmp-9:tmp);
nOddSum += (szNumber[i+1] - '0');
}
}
else
{
for(int i=0;i<(nLen-1);i+=2)
{
nOddSum += (szNumber[i]-'0');
int tmp = (szNumber[i+1]-'0')*2;
nEvenSum += (tmp>=10?tmp-9:tmp);
}
nOddSum += (szNumber[nLen-1]-'0');
}
if((nOddSum+nEvenSum)%10==0)
{
printf("成功\n");
}
else
{
printf("失败\n");
}
}
return 0;
}
本文档为【银行信用卡号验证初探】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑,
图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。