效验是否为银行卡
http://www.oschina.net/code/snippet_86738_3128 效验是否为银行卡,用于验证 现行 16 位银联卡现行卡号开头 6 位是 622126~622925 之间的,7 到 15 位是银行自定义的, 可能是发卡分行,发卡网点,发卡序号,第 16 位是校验码。 16 位卡号校验位采用 Luhm 校验方法计算: 1,将未带校验位的 15 位卡号从右依次编号 1 到 15,位于奇数位号上的数字乘以 2 2,将奇位乘积的个十位全部相加,再加上所有偶数位上的数字 3,将加法和加上校验位能被 10 整除。 6 2 2 5 8 8 1 4 1 4 2 0 7 4 3 * 2 2 2 2 2 2 2 2 -------------------------------------------------- 12 2 4 5 16 8 2 4 2 4 4 14 4 6 将上面的数字加和:1+2+2+4+5+1+6+8+2+4+2+4+4+1+4+4+6 = 60 由于 60 加上 0 才能被 10 整除,所以校验位为 0 因此该卡号为 6225 8814 1420 7430 如果其中一位数字换掉的话,直接导致最后校验位错误。 标签: 银行卡 public class Test { public static void main(String[] args) {