网站首页 > 技术文章 正文
最近的项目中涉及到绑定用户的银行卡,借记卡。经过查找银行卡的校验规是采用 Luhn算法进行验证。
Luhn算法,也被称作“模10算法”。它是一种简单的校验公式,一般会被用于身份证号码,IMEI号码,美国供应商识别号码,或是加拿大的社会保险号码的验证,主要用来计算信用卡等证件号码的合法性。
- 从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。
- 从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去9),再求和。
- 将奇数位总和加上偶数位总和,结果应该可以被10整除。
例如,卡号是:5432123456788881
则奇数、偶数位(逆向奇数位为红色字体,偶数位为默认字体)分布:5432123456788881
奇数位 4 2 2 4 6 8 8 1 求和=35
偶数位乘以2(若乘积大于9就要减去9)的结果:1 6 2 6 1 5 7 7,求和=35。
最后35+35=70可以被10整除,认定校验通过。
—(BOOL) checkCardNumber:(NSString *) cardNumber{
int sum = 0;
int len = [cardNo length];
int i = 0;
while (i < len) {
NSString *tmpString = [cardNo substringWithRange:NSMakeRange(len - 1 - i, 1)];
int tmpVal = [tmpString intValue];
if (i % 2 == 0) {
tmpVal *= 2;
if(tmpVal>9) {
tmpVal -= 9;
}
}
sum += tmpVal;
i++;
}
if((sum % 10) == 0)
return YES;
else
return NO;
}
猜你喜欢
- 2025-07-06 C/C++编程笔记:C++中的运算符重载
- 2025-07-06 Qt - QObject事件
- 2025-07-06 Python ‘bufferobject.c’整数溢出漏洞
- 2025-07-06 Object-c和Java中的代理
- 最近发表
- 标签列表
-
- axure 注册码 (25)
- exploit db (21)
- mutex_lock (30)
- oracleclient (27)
- javascript权威指南 (19)
- nfs (25)
- springbatch (28)
- oracle数据库备份 (25)
- iptables (21)
- 自动化单元测试 (18)
- dir (26)
- connectionstring属性尚未初始化 (23)
- output (32)
- panel滚动条 (28)
- centos 5 4 (23)
- sql学习 (33)
- http error 503 (21)
- android退出应用 (21)
- 图片透明度 (20)
- c 数组 (33)
- pascal语言教程 (23)
- java 下载 (20)
- ppt 教程 (35)
- java7 (24)
- 存储区域网络 (19)