美文网首页超棒文集
银行卡合法性校验

银行卡合法性校验

作者: SuperDanny | 来源:发表于2016-02-26 10:45 被阅读421次

Luhn检验数字算法(Luhn Check Digit Algorithm),也叫做模数10公式,是一种简单的算法,用于验证银行卡、信用卡号码的有效性的算法。对所有大型信用卡公司发行的信用卡都起作用,这些公司包括美国Express、护照、万事达卡、Discover和用餐者俱乐部等。这种算法最初是在20世纪60年代由一组数学家制定,现在Luhn检验数字算法属于大众,任何人都可以使用它。
算法:将每个奇数加倍和使它变为单个的数字,如果必要的话通过减去9和在每个偶数上加上这些值。如果此卡要有效,那么,结果必须是10的倍数。

使用如下代码:

//剔除卡号里的非法字符
-(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;
}

再一次感谢您花费时间阅读这篇文章!

微博: @Danny_吕昌辉
博客: SuperDanny

相关文章

  • 银行卡合法性校验

    Luhn检验数字算法(Luhn Check Digit Algorithm),也叫做模数10公式,是一种简单的算法...

  • iOS银行卡合法性校验

    项目中用到了校验银行卡,就拿来贴上来了

  • AFN支持https后能否抓包的对应设置

    1、支持https,校验证书的合法性,不可以使用抓包工具拦截请求。 2、支持https,不校验证书的合法性,可以使...

  • Android Url合法性校验

    android.util.Patterns Url合法性校验方法 实例

  • SpringMVC | 基础(二)

    一. 数据校验 JSR 303:是 Java 为 Bean 数据合法性校验提供的标准框架,它已经包含在 JavaE...

  • Android开发工具类

    BankCheck:银行卡管理 checkBankCard : 校验银行卡卡号是否合法getBankCardChe...

  • Spring Validation框架+AOP实现Control

    项目开发过程中,通常都涉及到表单提交时候前台传递的表单数据的数据合法性校验,这里说的合法性指的是数据合法性,不涉及...

  • 04.SpringShell参数校验

    SpringShell 支持使声明式注解校验参数, 使用声明式注解校验之后, 不仅在执行命令时会对参数进行合法性校...

  • 2019-01-14 springboot validation

    1、对象校验 为了接口的健壮性,我们通常除了客户端进行输入合法性校验外,在 Controller 的方法里,我们也...

  • Spring Boot 校验

    前言 平常开发接口中,有大量重复的参数合法性校验,例如: 参数众多,校验方式也各为不同,代码难免变得臃肿。 Spr...

网友评论

    本文标题:银行卡合法性校验

    本文链接:https://www.haomeiwen.com/subject/ddcwkttx.html