银行卡号校验 Luhm 算法
银行卡号校验是在进行银行卡交易时非常重要的一环,银行通常会使用 Luhm 算法对银行卡号进行校验,以确保输入的银行卡号的合法性。本文将介绍 Luhm 算法的原理以及如何用 Java 代码实现银行卡号的校验。
Luhm 算法原理
Luhm 算法,又称为模数 10 算法,是一种校验算法,用于验证一串数字是否合法。在银行卡校验中,Luhm 算法计算银行卡号的校验位,通过对银行卡号的每一位数字进行加权求和并取模 10 进行校验,从而检测输入的银行卡号是否有误。
Luhm 算法的具体步骤如下:
- 从银行卡号的最后一位数字开始,逆序将每一位数字加权求和,即将奇数位数字乘以 2,如果乘以 2 后的数字大于 9,则减去 9。
- 将所有数字相加得到总和。
- 如果总和能被 10 整除,则校验通过,否则校验失败。
Java 实现
下面是用 Java 代码实现银行卡号校验的示例:
public class LuhmAlgorithm {
public static boolean validateBankCard(String cardNumber) {
int sum = 0;
boolean alternate = false;
for (int i = cardNumber.length() - 1; i >= 0; i--) {
int n = Integer.parseInt(cardNumber.substring(i, i + 1));
if (alternate) {
n *= 2;
if (n > 9) {
n = n - 9;
}
}
sum += n;
alternate = !alternate;
}
return sum % 10 == 0;
}
public static void main(String[] args) {
String cardNumber = "1234567890123452";
if (validateBankCard(cardNumber)) {
System.out.println("银行卡号校验通过");
} else {
System.out.println("银行卡号校验失败");
}
}
}
在上面的示例中,我们定义了一个名为 validateBankCard
的方法,用于对银行卡号进行 Luhm 算法校验。在 main
方法中,我们输入一个银行卡号并调用 validateBankCard
方法进行校验,最终输出校验结果。
示例
下面是一个使用 Luhm 算法校验银行卡号的示例过程:
journey
title 银行卡号校验示例
section 输入银行卡号
participant 用户
participant 程序
用户 -> 程序: 输入银行卡号"1234567890123452"
section 校验银行卡号
participant 程序
程序 -> 程序: 逆序加权求和
程序 -> 程序: 计算总和
程序 --> 用户: 输出校验结果"银行卡号校验通过"
结语
通过本文的介绍,我们了解了 Luhm 算法的原理以及如何用 Java 代码实现银行卡号的校验。银行卡号校验在银行交易中起着重要的作用,能够有效减少输入错误带来的风险。希望本文能够对你有所帮助,谢谢阅读!