美文网首页
银行卡模10校验

银行卡模10校验

作者: 戈壁堂 | 来源:发表于2020-08-06 18:52 被阅读0次

    校验码为银行卡号最后一位,采用LUHN算法,亦称模10算法。计算方法如下:

    第一步:从右边第1个数字开始每隔一位乘以2;

    第二步: 把在第一步中获得的乘积的各位数字相加,然后再与原号码中未乘2的各位数字相加;

    第三步:对于第二步求和值中个位数求10的补数,如果个位数为0则该校验码为0。

    举例:625965087177209(不含校验码的银行卡号)

    第一步:62=12,52=10,62=12,02=0,72=14,72=14,22=4,92=18

    第二步:1+2 + 1+0 + 1+2 + 0 + 1+4 + 1+4 + 4 + 1+8 = 30

    30 + 2+9+5+8+1+7+0 = 62

    第三步:10-2=8

    所以,校验码是8,完整的卡号应该是6259650871772098

    Luhn algorithm Java Luhn algorithm Golang

    // CalculateLuhn return the check number
    func CalculateLuhn(number int) int {
        checkNumber := checksum(number)
    
        if checkNumber == 0 {
            return 0
        }
        return 10 - checkNumber
    }
    
    // Valid check number is valid or not based on Luhn algorithm
    func Valid(number int) bool {
        return (number%10+checksum(number/10))%10 == 0
    }
    
    func checksum(number int) int {
        var luhn int
    
        for i := 0; number > 0; i++ {
            cur := number % 10
    
            if i%2 == 0 { // even
                cur = cur * 2
                if cur > 9 {
                    cur = cur%10 + cur/10
                }
            }
    
            luhn += cur
            number = number / 10
        }
        return luhn % 10
    }
    

    相关文章

      网友评论

          本文标题:银行卡模10校验

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