Object-C 银行卡,信用卡校验规则(Luhn算法)
最近的项目中涉及到绑定用户的银行卡,借记卡。经过查找银行卡的校验规是采用 Luhn算法进行验证。
- 从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。
- 从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去9),再求和。
- 将奇数位总和加上偶数位总和,结果应该可以被10整除。
3135788
奇数位 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 len = [cardNumber length];
;
while (i < len) {
NSString *tmpString = [cardNo substringWithRange:NSMakeRange(len - - i, )];
int tmpVal = [tmpString intValue];
!= ) {
tmpVal *= ;
) {
tmpVal -= ;
}
}
sum += tmpVal;
i++;
}
) == )
return YES;
else
return NO;
}
Object-C 银行卡,信用卡校验规则(Luhn算法)的更多相关文章
- 银行卡号码校验算法(Luhn算法,又叫模10算法)
有时候在网上办理一些业务时有些需要填写银行卡号码,当胡乱填写时会立即报错,但是并没有发现向后端发送请求,那么这个效果是怎么实现的呢. 对于银行卡号有一个校验算法,叫做Luhn算法. 一.银行卡号码的校 ...
- PHP中使用Luhn算法校验信用卡及借记卡卡号
Luhn算法会通过校验码对一串数字进行验证,校验码通常会被加到这串数字的末尾处,从而得到一个完整的身份识别码. 我们以数字“7992739871”为例,计算其校验位: 从校验位开始,从右往左,偶数位乘 ...
- 判断用户输入的银行卡号是否正确--基于Luhn算法的格式校验
开发中,有时候,为了打造更好的用户体验,同时减轻服务器端的压力,需要对于一些如,手机号码,银行卡号,身份证号码进行格式校验 下面是判断银行卡号输入是否正确的代码(基于Luhn算法的格式校验): iOS ...
- [技术栈]C#利用Luhn算法(模10算法)对IMEI校验
1.Luhn算法(模10算法) 通过查看ISO/IEC 7812-1:2017文件可以看到对于luhn算法的解释,如下图: 算法主要分为三步: 第一步:从右边第一位(最低位)开始隔位乘2: 第二步:把 ...
- PHP LUHN算法验证银行卡
<?php /* 16-19 位卡号校验位采用 Luhn 校验方法计算: 第一步:把信用卡号倒序(61789372994) 第二步:取出倒序后的奇数位置上的号码, 相加等到总和s1.(eg:s1 ...
- 使用Luhn算法实现信用卡号验证
问题描述: 2:信用卡号的验证 [信用卡号的验证] 当你输入信用卡号码的时候,有没有担心输错了而造成损失呢?其实可以不必这么 担心,因为并不是一个随便的信用卡号码都是合法的,它必须通过 Luhn 算法 ...
- 银行卡luhm校验算法
/** * 15位银行卡luhm校验算法 * 1.从卡号最后一位数字开始,逆向将奇数位(1.3.5等等)相加. * 2.从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去 ...
- js验证银行卡号 luhn校验规则
<script type="text/javascript"> //luhn校验规则:16位银行卡号(19位通用): // 1.将未带校验位的 15(或18)位卡号从右 ...
- JavaScript实现LUHN算法验证银行卡号有效性
一般验证银行卡有效性用到一种叫做LUHN的算法,简介请参考这篇博客:基于Luhn算法的银行卡卡号的格式校验 注意: 1.LUHN算法只是能校验卡号是否有效,并不能校验卡号和用户名是否一致. 2.如果有 ...
随机推荐
- 109)PHP与oracle网址
https://pecl.php.net/package/oci8/2.1.8/windowshttps://www.toadworld.com/platforms/oracle/w/wiki/116 ...
- The General Addition Rule|complementation rule|special addition rule|
5.3 Some Rules of Probability 如图所示,AorB是所有蓝色区域,所以P(AorB)=PA+PB,但是若非互斥事件,则不能直接相加: If you think of the ...
- Linux命令:ldd
1.ldd不是一个可执行程序,而是一个shell脚本. zlf@ubuntu:~/$ which ldd /usr/bin/ldd zlf@ubuntu:~/$ file /usr/bin/ldd / ...
- getRandomInt getRandomString
import java.util.concurrent.ThreadLocalRandom; private static final String AB = "ABCDEFGHIJKLMN ...
- JavaScript函数创建方式
1.工厂模式 function createPerson(name, job) { var o = new Object() o.name = name o.job = job o.sayName = ...
- OpenCV、EmguCV函数注解
- python语法基础-面向对象-基础-长期维护
############### 类的基本操作 ############## """ 类的基本认识: 1,类就是一个模子 2,dict,list都是类,具体的一 ...
- elasticsearch5.4安装
1.从官网下载ES 安装包: elasticsearch-.tar.gz 2.解压到要安装的目录 注意:一定要切换用户,不能用root用户解压,不能用root用户启动 tar -zxvf elasti ...
- PowerDesign15连接数据库并反向表结构详细
10.0 sql2008 11.0 sql2010 这的服务器名称,复制到上面 这里的默认数据库不要改.Powerdesign会把自已的数据也存在默认的数据库里 一般不用改 测试 成功 这里ODBC的 ...
- JavaScript秒转换成天-小时-分钟-秒
根据时间秒转换成天-小时-分钟-秒 // 秒转换成day.hour.minutes.seconds formatSecond(second: number) { const days = Math.f ...