银行卡验证

简介: 银行卡 验证       public class CheckBankCard { /* * 校验过程: * 1、从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。

银行卡 验证

 

 

 

public class CheckBankCard {
	/*
	 * 校验过程: 
	 * 1、从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。
	 * 2、从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,将个位十位数字相加,即将其减去9),再求和。
	 * 3、将奇数位总和加上偶数位总和,结果应该可以被10整除。
	 */
	/**
	 * 校验银行卡卡号
	 */
	public static boolean checkBankCard(String bankCard) {
		if (bankCard.length() < 15 || bankCard.length() > 19) {
			return false;
		}
		char bit = getBankCardCheckCode(bankCard.substring(0, bankCard.length() - 1));
		if (bit == 'N') {
			return false;
		}
		return bankCard.charAt(bankCard.length() - 1) == bit;
	}

	/**
	 * 从不含校验位的银行卡卡号采用 Luhm 校验算法获得校验位
	 * 
	 * @param nonCheckCodeBankCard
	 * @return
	 */
	public static char getBankCardCheckCode(String nonCheckCodeBankCard) {
		if (nonCheckCodeBankCard == null || nonCheckCodeBankCard.trim().length() == 0 || !nonCheckCodeBankCard.matches("\\d+")) {
			// 如果传的不是数据返回N
			return 'N';
		}
		char[] chs = nonCheckCodeBankCard.trim().toCharArray();
		int luhmSum = 0;
		for (int i = chs.length - 1, j = 0; i >= 0; i--, j++) {
			int k = chs[i] - '0';
			if (j % 2 == 0) {
				k *= 2;
				k = k / 10 + k % 10;
			}
			luhmSum += k;
		}
		return (luhmSum % 10 == 0) ? '0' : (char) ((10 - luhmSum % 10) + '0');
	}

	public static void main(String[] args) {
		boolean checkBankCard = checkBankCard("6217991100001804444");
		System.out.println(checkBankCard);
	}
}

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

捐助开发者 

在兴趣的驱动下,写一个免费的东西,有欣喜,也还有汗水,希望你喜欢我的作品,同时也能支持一下。 当然,有钱捧个钱场(支持支付宝和微信 以及扣扣群),没钱捧个人场,谢谢各位。

 

个人主页http://knight-black-bob.iteye.com/



 
 
 谢谢您的赞助,我会做的更好!

目录
相关文章
|
7月前
|
前端开发 JavaScript
JS前端实现身份证号码合法性校验(校验码校验)
JS前端实现身份证号码合法性校验(校验码校验)
234 0
银行卡实名核验的工作原理
银行卡四要素API接口是用于验证银行卡真实性的一种接口,其原理主要是通过调用银行的身份验证系统,实现客户身份信息与银行卡绑定的过程。
|
安全 API 数据库
一文带你了解银行卡验证api接口
银行卡验证api接口指的是通过天眼数聚这样的合规性api接口服务商,接入银联数据库,对用户提供的银行卡信息进行真实性核验的一种实名认证方法
1043 0
一文带你了解银行卡验证api接口
|
存储 文字识别 小程序
小程序识别身份证,银行卡,营业执照,驾照
小程序识别身份证,银行卡,营业执照,驾照
|
API 数据库
身份证实名认证接口验证不一致的原因
身份证是每个公民最常用的身份证明,随着当今互联网的快速发展,日常生活中越来越多的场景需要进行身份核验,以身份证实名认证为基础的网络实名制也引起了各行业的关注,随着实名制认证应用情景的多元化,众多网络平台对实名制验证机制的要求也越发严格。
447 0
身份证实名认证接口验证不一致的原因
|
Java
Java实现身份证号码验证
整理文档时,搜刮出一个Java实现身份证号码验证源码示例代码,稍微整理精简了一下分享给大家。
342 0
|
并行计算
3DS支付验证服务
本文研究全球及中国市场3DS支付验证服务现状及未来发展趋势,侧重分析全球及中国市场的主要企业,同时对比北美、欧洲、中国、日本、东南亚和印度等地区的现状及未来发展趋势
|
Web App开发 JavaScript
身份证 验证
身份证验证     import java.text.ParseException; import java.text.SimpleDateFormat; import java.
1497 0