博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
IOS银行卡合法性校验
阅读量:4317 次
发布时间:2019-06-06

本文共 1329 字,大约阅读时间需要 4 分钟。

Luhn检验数字算法(Luhn Check Digit Algorithm),也叫做模数10公式,是一种简单的算法,用于验证银行卡、信用卡号码的有效性的算法。对所有大型信用卡公司发行的信用卡都起作用,这些公司包括美国Express、护照、万事达卡、Discover和用餐者俱乐部等。这种算法最初是在20世纪60年代由一组数学家制定,现在Luhn检验数字算法属于大众,任何人都可以使用它。

算法:将每个奇数加倍和使它变为单个的数字,如果必要的话通过减去9和在每个偶数上加上这些值。如果此卡要有效,那么,结果必须是10的倍数。

这里贴出ios里的实现代码,其他语言的google去。

//剔除卡号里的非法字符-(NSString *)getDigitsOnly:(NSString*)s{    NSString *digitsOnly = @"";    char c;    for (int i = 0; i < s.length; i++)    {        c = [s characterAtIndex:i];        if (isdigit(c))        {            digitsOnly =[digitsOnly stringByAppendingFormat:@"%c",c];        }    }    return digitsOnly;}//检查银行卡是否合法//Luhn算法-(BOOL)isValidCardNumber:(NSString *)cardNumber{    NSString *digitsOnly = [self getDigitsOnly:cardNumber];    int sum = 0;    int digit = 0;    int addend = 0;    BOOL timesTwo = false;    for (int i = digitsOnly.length - 1; i >= 0; i--)    {        digit = [digitsOnly characterAtIndex:i] - '0';        if (timesTwo)        {            addend = digit * 2;            if (addend > 9) {                addend -= 9;            }        }        else {            addend = digit;        }        sum += addend;        timesTwo = !timesTwo;    }    int modulus = sum % 10;    return modulus == 0;}

 转载的博客  http://www.heyuan110.com/2015/06/16/IOS银行卡合法性校验/

 

转载于:https://www.cnblogs.com/liuweiqiang11188/p/5383148.html

你可能感兴趣的文章
嵌入式Linux学习笔记(0)基础命令。——Arvin
查看>>
二分图匹配
查看>>
c++ 模板template
查看>>
javascript中的string对象
查看>>
CString的成员函数详解
查看>>
Appium Studio 初体验(windows做ios自动化,录制appium脚本)
查看>>
学习java前端 两种form表单提交方式
查看>>
Linux常用命令
查看>>
整体二分&cdq分治 ZOJ 2112 Dynamic Rankings
查看>>
【POJ2976】Dropping tests (01分数规划入门题)
查看>>
通过正则表达式获取url中参数
查看>>
86.运算符重载
查看>>
cxx signal信号捕获
查看>>
《Android开发艺术探索》读书笔记——Cha3.2.3改变布局参数实现View的滑动
查看>>
python闭包与装饰器
查看>>
Acegi 源码解释
查看>>
Activity的几种启动跳转方式
查看>>
LCA最近公共祖先Tarjan(离线)
查看>>
牛客练习赛16 E求值
查看>>
matlab rank
查看>>