美文网首页
银行卡模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