您的位置:首页 > 其它

银行卡luhm校验算法

2014-04-04 10:50 260 查看
  /**
* 15位银行卡luhm校验算法
* 1、从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。
* 2、从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去9),再求和。
* 3、将奇数位总和加上偶数位总和,结果应该可以被10整除。
* @param temp 前15位
* @return  有效卡返回原卡号,无效卡返回空字符串
*/
public static String luhm(String temp) {
String result = "";
String reg15Nums = "^\\d{15}$";// 15 位数字
if (temp.matches(reg15Nums)) {
char[] ns = temp.toCharArray();
int numSum = 0;
for (int i = ns.length - 1, j = 0; i >= 0; i--, j++) {
char n = ns[i];
int num = Integer.parseInt(n + "");
if (j % 2 == 0) {
num *= 2;
if (num > 9) {
num -= 9;
}
}
numSum += num;
}
int last = (10 - numSum % 10) % 10;
result = temp + last;
}
return result;
}


下面附上16到19位之间的luhm校检的js代码案例

16到19位之间的银行卡号luhm校验JS代码.zip
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: