android判断银行卡号格式不正确的是什么意思,android银行卡号验证算法详解
现行 16 位银联卡现行卡号开头 6 位是 622126~622925 之间的,7 到 15 位是银行自定义的, 可能是发卡分行,发卡网点,发卡序号,第 16 位是校验码。
16 位卡号校验位采用 Luhm 校验方法计算:
1、将未带校验位的 15 位卡号从右依次编号 1 到 15,位于奇数位号上的数字乘以 2
2、将奇位乘积的个十位全部相加,再加上所有偶数位上的数字
3、将加法和加上校验位能被 10 整除。
public class CheckIdCard {
/**
* 校验银行卡卡号
*
* @param cardId
* @return
*/
public static boolean checkBankCard(String cardId) {
char bit = getBankCardCheckCode(cardId
.substring(0, cardId.length() - 1));
if (bit == 'N') {
return false;
}
return cardId.charAt(cardId.length() - 1) == bit;
}
/**
* 从不含校验位的银行卡卡号采用 Luhm 校验算法获得校验位
*
* @param nonCheckCodeCardId
* @return
*/
public static char getBankCardCheckCode(String nonCheckCodeCardId) {
if (nonCheckCodeCardId == null
|| nonCheckCodeCardId.trim().length() == 0
|| !nonCheckCodeCardId.matches("\\d+")) {
// 如果传的不是数据返回N
return 'N';
}
char[] chs = nonCheckCodeCardId.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');
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程圈。
android判断银行卡号格式不正确的是什么意思,android银行卡号验证算法详解相关推荐
- 判断字符串格式_Python基础教程,第四讲,字符串详解
本节课主要和大家一起学习一下Python中的字符串操作,对字符串的操作在开发工作中的使用频率比较高,所以单独作为一课来讲. 学完此次课程,我能做什么? 学完本次课程后,我们将学会如何创建字符串,以及如 ...
- Android 判断手机号格式是否正确
第一种:通过正则直接判断 public static boolean isPhone(String str) {String regex = "^(1)\\d{10}$";//正则 ...
- php 表单校验函数库(判断email格式是否正确、http地址是否合法有效、手机号码是否合法)...
/*** 表单校验函数库*//*** 判断email格式是否正确* @param $email*/ function is_email($email) {return strlen($email) & ...
- 输入一个QQ邮箱或者网易邮箱,判断其格式是否正确 要求:长度不能超过15,@前面不能用字母 正确格式2156636@qq.com
package com.coding.syudy05; /*** 输入一个QQ邮箱或者网易邮箱,判断其格式是否正确* 要求:长度不能超过15,@前面不能用字母* 正确格式2156636@qq.com* ...
- Java判断日期格式是否正确
Java判断日期格式是否正确 Java中有一个能判断日期格式是否正确的方法SimpleDateFormat.setLenient(boolean lenient).该方法的默认值为true,会将错误的 ...
- JAVA判断身份证格式是否正确
/*** 判断身份证格式是否正确* @param idNum 身份证* @return 响应数据*/public static boolean vId(String idNum) {return vI ...
- ios利用正则表达式判断手机号码格式是否正确
//判断手机号码格式是否正确 + (BOOL)valiMobile:(NSString *)mobile { mobile = [mobile stringByReplacingOccurrences ...
- java正则判断日期格式_Java中用正则表达式判断日期格式是否正确
1.Java中用正则表达式判断日期格式是否正确 DateType.java: /** * @Title:DateType.java * @Package:com.you.dao * @Descript ...
- 判断邮箱 格式是否正确
/练习:判断邮箱格式是否正确 //1.有且只能有一个@ contains @ indexof @=lastindexof //2.不能以@开头 indexof != 0 //3.@之后至少有一个. / ...
最新文章
- 删除 win10 资源 默认 音乐 视频 文件夹
- 如何优化才能赢得搜索引擎“欢心”,提升抓取量?
- Android Studio-目录结构
- 【数据竞赛】十组不同类型的组合特征!
- HR 的那些黑话大全,太扎心了!(漫画)
- (转)非极大抑制(Non-Maximum Suppression)
- mysq5.7 主主同步
- 【Android 应用开发】Activity 状态保存 OnSaveInstanceState參数解析
- 基于python的文件加密传输_基于python实现文件加密功能
- 微信iOS多设备多字体适配方案总结
- MetaException(message:Hive Schema version 2.1.0 does not match metastore‘s schema version 1.2.0 Meta
- Paradigm 已对 NFT 艺术品铸造和收藏协议 ZORA 进行投资
- DB2之CLOB对象用法
- dubbo这样的RPC接口与HTTP接口相比,有什么优势,以及HTTP请求中的三次握手
- 你真的了解 MySQL 数据库的运行状况吗?
- Asp.net自定义控件开发任我行(4)-ViewState保存控件状态
- 我们为什么不画高保真原型图
- Docker容器 Dead 状态分析
- 4章Servlet技术:http头查看+Serverlet入门
- JavaScript基础——滚动事件、加载事件、三大家族
热门文章
- 新款苹果电脑_苹果发布新款MacBookAir 搭载M1芯片7999起
- mysql 5.7.13安装_安装MySQL 5.7.13
- linux 内核驱动的poll,嵌入式Linux驱动开发(五)——poll机制原理以及驱动实现...
- android后台时不显示,Android后台下载问题
- 编译器构造 c语言描,编译器构造C语言描述
- mysql 账户管理_Mysql账户管理_MySQL
- movsw 汇编_[转]汇编语言:MOVSB,MOVSW,MOVSD
- svm 支持向量机 回归 预测_机器学习:简单理解支持向量机SVM
- java 输出数据类型_输入输出和java数据类型
- 系统接口对接的进度工作应该谁来干_项目的交付进度总是延迟,项目经理找了很久才发现是这4类原因...