转自:http://kkvsyy.iteye.com/blog/1125105
关于上一节中的问题:银行卡号的校验我在网上找到一个简单的算法
-
-
-
-
-
-
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;
-
}
-
-
-
-
-
-
-
public
static
char
getBankCardCheckCode(String nonCheckCodeCardId){
-
if
(nonCheckCodeCardId ==
null
|| nonCheckCodeCardId.trim().length() ==
0
-
|| !nonCheckCodeCardId.matches("\\d+"
)) {
-
-
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'
);
-
}
关于身份证件号码的校验,比较严格的控制
-
-
-
-
-
-
-
-
-
-
function
isChinaIDCard(StrNo, _Id) {
-
var
error = document.getElementById(_Id);
-
StrNo = StrNo.toString();
-
if
(StrNo.length == 15) {
-
if
(!isValidDate(
"19"
+ StrNo.substr(6, 2), StrNo.substr(8, 2),
-
StrNo.substr(10, 2), _Id)) {
-
return
false
;
-
}
-
} else
if
(StrNo.length == 18) {
-
if
(!isValidDate(StrNo.substr(6, 4), StrNo.substr(10, 2), StrNo
-
.substr(12, 2), _Id)) {
-
return
false
;
-
}
-
} else
{
-
error.innerHTML = ""
;
-
error.innerHTML = "输入的身份证号码必须为15位或者18位!"
;
-
return
false
;
-
}
-
-
if
(StrNo.length == 18) {
-
var
a, b, c
-
if
(!isNumber(StrNo.substr(0, 17))) {
-
-
error.innerHTML = ""
;
-
error.innerHTML = "身份证号码错误,前17位不能含有英文字母!"
;
-
return
false
;
-
-
}
-
a = parseInt(StrNo.substr(0, 1)) * 7 + parseInt(StrNo.substr(1, 1))
-
* 9 + parseInt(StrNo.substr(2, 1)) * 10;
-
a = a + parseInt(StrNo.substr(3, 1)) * 5
-
+ parseInt(StrNo.substr(4, 1)) * 8
-
+ parseInt(StrNo.substr(5, 1)) * 4;
-
a = a + parseInt(StrNo.substr(6, 1)) * 2
-
+ parseInt(StrNo.substr(7, 1)) * 1
-
+ parseInt(StrNo.substr(8, 1)) * 6;
-
a = a + parseInt(StrNo.substr(9, 1)) * 3
-
+ parseInt(StrNo.substr(10, 1)) * 7
-
+ parseInt(StrNo.substr(11, 1)) * 9;
-
a = a + parseInt(StrNo.substr(12, 1)) * 10
-
+ parseInt(StrNo.substr(13, 1)) * 5
-
+ parseInt(StrNo.substr(14, 1)) * 8;
-
a = a + parseInt(StrNo.substr(15, 1)) * 4
-
+ parseInt(StrNo.substr(16, 1)) * 2;
-
b = a % 11;
-
if
(b == 2)
-
{
-
c = StrNo.substr(17, 1).toUpperCase();
-
} else
{
-
c = parseInt(StrNo.substr(17, 1));
-
}
-
switch
(b) {
-
case
0:
-
if
(c != 1) {
-
error.innerHTML = ""
;
-
error.innerHTML = "身份证号码校验位错:最后一位应该为:1"
;
-
return
false
;
-
}
-
break
;
-
case
1:
-
if
(c != 0) {
-
error.innerHTML = ""
;
-
error.innerHTML = "身份证号码校验位错:最后一位应该为:0"
;
-
return
false
;
-
}
-
break
;
-
case
2:
-
if
(c !=
"X"
) {
-
error.innerHTML = ""
;
-
error.innerHTML = "身份证号码校验位错:最后一位应该为:X"
;
-
return
false
;
-
}
-
break
;
-
case
3:
-
if
(c != 9) {
-
error.innerHTML = ""
;
-
error.innerHTML = "身份证号码校验位错:最后一位应该为:9"
;
-
return
false
;
-
}
-
break
;
-
case
4:
-
if
(c != 8) {
-
error.innerHTML = ""
;
-
error.innerHTML = "身份证号码校验位错:最后一位应该为:8"
;
-
return
false
;
-
}
-
break
;
-
case
5:
-
if
(c != 7) {
-
error.innerHTML = ""
;
-
error.innerHTML = "身份证号码校验位错:最后一位应该为:7"
;
-
return
false
;
-
}
-
break
;
-
case
6:
-
if
(c != 6) {
-
error.innerHTML = ""
;
-
error.innerHTML = "身份证号码校验位错:最后一位应该为:6"
;
-
return
false
;
-
}
-
break
;
-
case
7:
-
if
(c != 5) {
-
error.innerHTML = ""
;
-
error.innerHTML = "身份证号码校验位错:最后一位应该为:5"
;
-
return
false
;
-
}
-
break
;
-
case
8:
-
if
(c != 4) {
-
error.innerHTML = ""
;
-
error.innerHTML = "身份证号码校验位错:最后一位应该为:4"
;
-
return
false
;
-
}
-
break
;
-
case
9:
-
if
(c != 3) {
-
error.innerHTML = ""
;
-
error.innerHTML = "身份证号码校验位错:最后一位应该为:3"
;
-
return
false
;
-
}
-
break
;
-
case
10:
-
if
(c != 2) {
-
error.innerHTML = ""
;
-
error.innerHTML = "身份证号码校验位错:最后一位应该为:2"
;
-
return
false
;
-
}
-
}
-
} else
{
-
if
(!isNumber(StrNo)) {
-
error.innerHTML = ""
;
-
error.innerHTML = "身份证号码错误,前15位不能含有英文字母!"
;
-
return
false
;
-
}
-
}
-
return
true
;
-
-
}
-
-
-
-
-
-
-
-
-
function
isValidDate(iY, iM, iD, _id) {
-
if
(iY > 2200 || iY < 1900 || !isNumber(iY)) {
-
document.getElementById(_id).innerHTML = ""
;
-
document.getElementById(_id).innerHTML = "输入身份证号,年度"
+ iY +
"非法!"
;
-
return
false
;
-
}
-
if
(iM > 12 || iM <= 0 || !isNumber(iM)) {
-
document.getElementById(_id).innerHTML = ""
;
-
document.getElementById(_id).innerHTML = "输入身份证号,月份"
+ iM +
"非法!"
;
-
return
false
;
-
}
-
if
(iD > 31 || iD <= 0 || !isNumber(iD)) {
-
document.getElementById(_id).innerHTML = ""
;
-
document.getElementById(_id).innerHTML = "输入身份证号,日期"
+ iD +
"非法!"
;
-
return
false
;
-
}
-
return
true
;
-
}
-
-
-
-
-
-
function
isNumber(oNum) {
-
if
(!oNum)
-
return
false
;
-
var
strP = /^\d+(\.\d+)?$/;
-
if
(!strP.test(oNum))
-
return
false
;
-
try
{
-
if
(parseFloat(oNum) != oNum)
-
return
false
;
-
} catch
(ex) {
-
return
false
;
-
}
-
return
true
;
-
}
注:关于银行卡号的校验 有什么更好的方法 请提出来 供大家研究 谢谢
分享到:
相关推荐
js校验身份证号和银行卡号,内有js和调用方法,经过测试,非常好用
JavaScript截取手机号码 手机验证 身份证验证等等
开发中,有时候,为了打造更好的用户体验,同时减轻服务器端的压力,需要对于一些如,手机号码,银行卡号,身份证号码进行格式校验 下面是判断银行卡号输入是否正确的代码(基于Luhn算法的格式校验): iOS代码: /...
vs2010上开发,用MFC实现的登录系统,具有三大功能: ... ... ... (1)每次调用软键盘,显示的数字及字母顺序都重新排列; (2)每填入一个字符显示的数字及字母顺序都重新排列;...(3)每次按下shift键,显示的数字及字母顺序...
JS input输入框 英文 中文 邮箱 手机号 银行卡 身份证等等各种正则验证 确保上传的内容合法合规,涉及侵权内容将会被移除
该应用集成了身份证实名、三网手机实名和银行卡二、三、四元素校验等多种核验方式;旨在帮助有需求但无技术的用户快速、准确地完成身份验证,提升用户体验和工作效率;让实名认证、银行卡核验变得简单、高效!
微信小程序端用户先通过身份证、密码、姓名、手机号、银行账号、地区等信息进行注册,银行验证用户是否存在该银行卡,验证成功后。可以进行登录用户登录到微信小程序。首页界面提供了广告能播界面、理财产品推荐、...
一些工具类代码块的标准代码,包括但不限于: ...验证是否银行卡号 验证身份证号码是否正确 判断是否为用户名账号(规则如下:用户名由下划线或字母开头,由数字、字母、下划线、点、减号组成的4-32位字符)
一、主要功能点 APP 项目实践 ...必须完成开户并绑卡操作后才能进行转账等操作。 二、主要技术 后端springboot,前端不限 三、功能介绍 ...1、银行卡号 必填 2、图形验证码 篇幅要求写不完 包含的功能了
可以读ISO14443B的身份证UID号,但读不了银行卡的UID,可能软件还需要改动一下。身份证的代码被注释了,要打开才行。希望给需要的朋友带来帮助。MFRC523读身份证ID号源码附件内容截图: 可能感兴趣的项目设计: RC523...
微信小程序端用户先通过身份证、密码、姓名、手机号、银行账号、地区等信息进行注册,银行验证用户是否存在该银行卡,验证成功后。可以进行登录用户登录到微信小程序。首页界面提供了广告能播界面、理财产品推荐、...
微信小程序端用户先通过身份证、密码、姓名、手机号、银行账号、地区等信息进行注册,银行验证用户是否存在该银行卡,验证成功后。可以进行登录用户登录到微信小程序。首页界面提供了广告能播界面、理财产品推荐、...
微信小程序端用户先通过身份证、密码、姓名、手机号、银行账号、地区等信息进行注册,银行验证用户是否存在该银行卡,验证成功后。可以进行登录用户登录到微信小程序。首页界面提供了广告能播界面、理财产品推荐、...
微信小程序端用户先通过身份证、密码、姓名、手机号、银行账号、地区等信息进行注册,银行验证用户是否存在该银行卡,验证成功后。可以进行登录用户登录到微信小程序。首页界面提供了广告能播界面、理财产品推荐、...
这是一个实现用户登陆注册的源码文件,其中还有包括手机号,身份证,以及银行卡号的验证正则表达式。
讲述的是如何保证系统的安全和稳定,整个系统基于FPGA。 内容头部: 随着计算机技术的不断发展,嵌入式系统不断地渗透到人们...入式设备上面,如把身份证号码,银行卡帐号敏感信息记录到智能手机, PDA,掌上 电脑中。
公交卡设计方案 2005年9月 一:系统目标 由华夏银行和公交公司联合发行的华夏万通卡,卡片上兼有华夏银行 的华夏卡(磁条卡)和公交公司的公交卡(IC卡)。华夏公交卡具备华 夏卡的全部功能,同时还可以在华夏银行各...
ChecksumValidation是用于验证国际银行帐户(IBAN),信用卡号,德国身份证,德国护照和德国银行帐户的框架。 通过计算校验和来执行验证。 德国银行帐户的校验和由www.bundesbank.de维护和记录。 总而言之,...
欺诈信息包括 姓名和身份证、手机、邮箱、银行卡、地址、IP、MAC等信息的验证。其实很简单,直接根据 官方接入文档进行开发既可。 本文档只是做了一些细化处理。并且存在自己系统相关的类,所以可能不适合每个人,但...
银行卡信息安全事件频发互联网站成数据泄露"重灾区" "卡在身上,钱却莫名其妙地被转走了",黑客5分钟就可以在网上获取1000个银行卡卡主的姓名、卡号、银行密码、身份证、电话号码等信息,近日曝光的一系列银行卡信息...