海量编程文章、技术教程与实战案例

网站首页 > 技术文章 正文

Object-C 银行卡,信用卡校验规则

yimeika 2025-07-06 18:31:50 技术文章 2 ℃

最近的项目中涉及到绑定用户的银行卡,借记卡。经过查找银行卡的校验规是采用 Luhn算法进行验证。

Luhn算法,也被称作“模10算法”。它是一种简单的校验公式,一般会被用于身份证号码,IMEI号码,美国供应商识别号码,或是加拿大的社会保险号码的验证,主要用来计算信用卡等证件号码的合法性。

  1. 从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。
  2. 从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去9),再求和。
  3. 将奇数位总和加上偶数位总和,结果应该可以被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;

}

Tags:

最近发表
标签列表