`
dragonhunter
  • 浏览: 32630 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

银行卡号校验判断

    博客分类:
  • java
阅读更多

 

最近在弄支付,遇到银行卡号的校验规则,根据网上的luhm规则自己写了一个。

 

public class TestBankCode {

	public static void main(String[] args) {
		String bankCode = "4381260012501251";
		System.out.println(validateluhm(bankCode));
		
	}

	/**
     * luhm校验
     * 从卡号最后一位数字开始,逆向将奇数位相加
     * 从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,则将其减去9),再求和
     * 奇偶相加为10的倍数表示通过
	 */
	public static boolean validateluhm(String bankCode){
		//验证
		if(!bankCode.matches("^\\d{16,19}$")){
			throw new IllegalArgumentException("bankCode must be 16-19 number,bankCode is : "+bankCode);
		}
		//倒转
	    String reverseCode = new StringBuffer(bankCode).reverse().toString();
		char[] array = reverseCode.toCharArray();
		int sumOdd = 0;
		int sumEven = 0;
		for(int i = 0;i<reverseCode.length();i++){
			int num = Integer.parseInt(String.valueOf(array[i]));
			if(i % 2 == 0){ //奇数位
				sumEven += num;
			}else{ //偶数位
				num = num * 2;
				if(num > 9){
					num = num - 9;
				}
				sumOdd += num;
			}
		}
		if((sumOdd + sumEven) % 10 == 0){
		    return true;
		}
		return false;
	}
}

 

 

分享到:
评论

相关推荐

    判断用户输入的银行卡号是否正确的方法(基于Luhn算法的格式校验)

    下面小编就为大家带来一篇判断用户输入的银行卡号是否正确的方法(基于Luhn算法的格式校验)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧

    java根据卡号识别银行

    里面包括一个资源类和一个测试类,需要将银行信息放在classpath下,测试加载spring的配置文件更改成自己的即可运行

    PHP实现根据银行卡号判断银行

    bankList.php请在文章末尾下载 ...charset=utf-8'); ... function bankInfo($card,$bankList) { $card_8 = substr($card, 0, 8);... if (isset($bankList[$card_8])) { echo $bankList[$card_8];... if (isset($bank

    iOS开发之银行卡号识别

    本文给大家分享ios开发之银行卡号识别功能,思路明确,需要的朋友参考下吧

    Java实现的校验银行卡功能示例

    主要介绍了Java实现的校验银行卡功能,结合完整实例形式分析了java针对银行卡类型、归属地等信息的判断、读取相关操作技巧,需要的朋友可以参考下

    客户资料管理系统---华软暑假实训资料

    签约要求:一个客户可以签约多张银行卡。 n.2 …. 影响要素 业务需求5:业务报表 n 客户管理员通过业务报表查询客户资料,并可以打印单笔的客户资料以及导出Excel。 详细的描述 n.1 业务流程 客户管理员在业务...

    java_用于App验证数据验证的工具类的标准代码_android

    一些工具类代码块的标准代码,包括但不限于: ...验证是否银行卡号 验证身份证号码是否正确 判断是否为用户名账号(规则如下:用户名由下划线或字母开头,由数字、字母、下划线、点、减号组成的4-32位字符)

    android开发工具箱

    两年开发过程中总结的有用的工具类,包含非常有用的开发工具类Activity堆栈管理、公共适配器、万能Json解析、http网络访问,图片异步加载,数据缓存,cook存储,网络状态判断,数据格式校验(手机号,银行卡等等),...

    商安pos_erp商业管理系统

    系统支持打折卡(不同的卡可设定不同的折扣)、会员卡(通过会员价进行销售)、购物卡(累计销售金额进行各种优惠)、储值卡(先存钱后消费,可用购物券等方式实现)、银行卡(通过银行发卡实现储值卡的功能)。...

    Javascript中使用parseInt函数需要注意的问题

    不过还真比较坑爹,asp站点,大家都知道信用卡的背面是有一个有效期的,在对接银行中这个信息一定是要传给银行做数据校验,用户在语音输入信用卡有效期后,系统会做一个有效期判断,为了不必要的麻烦,就是判断过期...

    ECShop v2.6.2 beta2 UTF-8.rar

     [新增] 新增文件校验功能  [新增] 新增促销礼包模块,能够将多个商品组合销售  [新增] 新增商品购买价格根据购买数量依次变更的功能  [新增] 新增商品详情页增加商品分类下的上一个 下一个商品  [新增] ...

    ECShop v2.6.2 beta2 GBK.rar

     [新增] 新增文件校验功能  [新增] 新增促销礼包模块,能够将多个商品组合销售  [新增] 新增商品购买价格根据购买数量依次变更的功能  [新增] 新增商品详情页增加商品分类下的上一个 下一个商品  [新增] ...

    飞恒进销存管理系统v7.21(源代码)

    2.增加多一个帐单号格式,原来只有按日期格式(帐套参数中增加一个选择)。 3.为酒店进销存增加一个日结,日结后根据酒店销售情况来减库存(加过程pcdDayAuditHotel, 注意:进销存里的货品编码要跟酒店里的酒水编码要...

Global site tag (gtag.js) - Google Analytics