Java代码校验银行卡号
如何通过java代码校验银行卡号呢?请看下面方法!
/*** 校验银行卡号方法* @param bankCard* @return*/public 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 char getBankCardCheckCode(String nonCheckCodeBankCard){if(nonCheckCodeBankCard == null || nonCheckCodeBankCard.trim().length() == 0|| !nonCheckCodeBankCard.matches("\\d+")) {//如果传的不是数据返回Nreturn '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');}
它的校验过程
- 从卡号最后一位数字开始,逆向将奇数位(1、3、5等等)相加。
- 从卡号最后一位数字开始,逆向将偶数位数字,先乘以2(如果乘积为两位数,将个位十位数字相加,即将其减去9),再求和。
- 将奇数位总和加上偶数位总和,结果应该可以被10整除。
测试
- 我们先输入正确的银行卡号结果显示
true
- 再输入错误的银行卡号结果显示
false
Java代码校验银行卡号相关推荐
- java代码校验手机号码_校验手机号码的正则表达式写法 (java实现)
本文转载自:http://my.oschina.net/william1/blog/4752 要更加准确的匹配手机号码只匹配11位数字是不够的,比如说就没有以144开始的号码段, 故先要整清楚现在已经 ...
- 安卓逆向_18 --- APK保护策略【Java代码混淆、资源混淆、签名校验】
Java 代码混淆介绍:https://www.bilibili.com/video/BV1UE411A7rW?p=60 Android 反编译利器 jadx:GitHub上直接下载:https:// ...
- java ipv6校验_Java对IPv6的支持详解:支持情况、相关API、演示代码等
本文由朱益盛.杨晖.傅啸分享,来自IBM Developer社区,原题"使用 Java 开发兼容 IPv6 的网络应用程序",本次收录时有改动. 1.引言 前几天,有个群友跟我讨论 ...
- 组织机构代码和统一社会信用代码校验规则以及java校验工具类
组织机构代码 编码规则编辑 1.全国组织机构代码由八位数字(或大写拉丁字母)本体代码和一位数字(或大写拉丁字母)校验码组成. 本体代码采用系列(即分区段)顺序编码方法. 校验码按照以下公式计算: C9 ...
- html对银行卡号的表单验证,JavaScript中校验银行卡号的实现代码
1.先引入jquery.js 2.接着引入luhmCheck.js //银行卡号Luhm校验 3.看下面的案例: 无标题页 下面是js function CheckBankNo(t_bankno) { ...
- java schema校验_Json Schema 校验json,java代码示例
Json Schema 校验json,java代码示例 1.json schema 入门请参考下面两篇博客 1.1Json Schema 快速入门 1.2Json Schema 简介 2.java代码 ...
- 你还在 Java 代码中写 set/get 方法?赶快试试这款插件吧!
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:Mr.ml https://blog.csdn.net/Ma ...
- 使用 lombok 简化 Java 代码
lombok 是一个第三方工具,提供了一些注解功能,可以帮助我们消除冗余.臃肿的 Java 代码,比如 POJO 的 getter/setter 方法.构造方法.hashcode 方法等.lombok ...
- idea自动生成get set_CTO:不要在Java代码中写set/get方法了,逮一次罚款
前言 what?你的 Java 代码中还充斥着大量的 set/get 方法? 我们在刚开始学习 Java 语言的时候讲过,面向对象的三大特征就是封装,继承,和多态.在 Java 中,要保证封装性,需要 ...
- Java程序员必备基础:Java代码是怎么运行的?
点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:一个线程池 bug 引发的 GC 思考!个人原创+1博客:点击前往,查看更多 链接:https://segmen ...
最新文章
- 使用OpenCV,Numpy计算直方图,Matplot绘制直方图及分析
- [再寄小读者之数学篇](2014-05-30 有限无界函数)
- mysql opaq数据库_MySql数据库
- Java8 PriorityBlockingQueue源码分析
- 消息称苹果下代iPhone、iPad产品都将采用钛合金
- SEO|搜索引擎优化(如何让你的网站排名靠前)
- python增量爬虫_python增量爬虫pyspider
- 多链NFT市场Polkarare获加密投资机构DFG战略投资
- 第129天:node.js安装方法
- 机器人动力学-拉格朗日方程
- 北斗卫星导航系统基础篇之(一)
- 我的盖洛普“优势识别器”测试报告
- xlsx模块 前端_node模块之xlsx使用
- 100个python算法超详细讲解:委派任务
- 图解!24张图彻底弄懂九大常见数据结构!
- 项目开发团队分配管理软件
- C 标准库 - 参考手册
- 企业信息安全需要做到的三点,可以有效的规避大部分风险
- 致微信:我们什么时候重新定义群聊?
- Ubuntu如何正确地切换Intel和Nvidia显卡