/**
* 校驗(yàn)銀行卡卡號(hào)
* @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; } /**
* 從不含校驗(yàn)位的銀行卡卡號(hào)采用 Luhm 校驗(yàn)算法獲得校驗(yàn)位
* @param nonCheckCodeCardId
* @return
*/ public static char getBankCardCheckCode(String nonCheckCodeCardId){ if(nonCheckCodeCardId == null || nonCheckCodeCardId.trim().length() == 0 || !nonCheckCodeCardId.matches("\\d+")) { //如果傳的不是數(shù)據(jù)返回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'); } // 測(cè)試代碼public class ResTest {
public static void main(String[] args) {
String reg = "18632116655";
String data = JsonUtil.toJson(reg);
String post = HttpClient.post("http://192.168.199.127:8067/openapi/rest/hometop/homeinfo", AESUtil.encrypt(data));
System.out.println(post);
System.out.println(AESUtil.decrypt(post));
}
}
/**
* author:qiaoyongjun
* StrNo:用戶(hù)輸入的身份證件號(hào)碼
* _id:用來(lái)承載錯(cuò)誤信息的控件ID號(hào),用來(lái)進(jìn)行友好提示
*判斷身份證號(hào)碼格式函數(shù)
*公民身份號(hào)碼是特征組合碼,
*排列順序從左至右依次為:六位數(shù)字地址碼,八位數(shù)字出生日期碼,三位數(shù)字順序碼和一位數(shù)字校驗(yàn)碼
*如果驗(yàn)證通過(guò) 返回 true
*/
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 = "輸入的身份證號(hào)碼必須為15位或者18位!";
return false;
}
if (StrNo.length == 18) {
var a, b, c
if (!isNumber(StrNo.substr(0, 17))) {
error.innerHTML = "";
error.innerHTML = "身份證號(hào)碼錯(cuò)誤,前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) //最后一位為校驗(yàn)位
{
c = StrNo.substr(17, 1).toUpperCase(); //轉(zhuǎn)為大寫(xiě)X
} else {
c = parseInt(StrNo.substr(17, 1));
}
switch (b) {
case 0:
if (c != 1) {
error.innerHTML = "";
error.innerHTML = "身份證號(hào)碼校驗(yàn)位錯(cuò):最后一位應(yīng)該為:1";
return false;
}
break;
case 1:
if (c != 0) {
error.innerHTML = "";
error.innerHTML = "身份證號(hào)碼校驗(yàn)位錯(cuò):最后一位應(yīng)該為:0";
return false;
}
break;
case 2:
if (c != "X") {
error.innerHTML = "";
error.innerHTML = "身份證號(hào)碼校驗(yàn)位錯(cuò):最后一位應(yīng)該為:X";
return false;
}
break;
case 3:
if (c != 9) {
error.innerHTML = "";
error.innerHTML = "身份證號(hào)碼校驗(yàn)位錯(cuò):最后一位應(yīng)該為:9";
return false;
}
break;
case 4:
if (c != 8) {
error.innerHTML = "";
error.innerHTML = "身份證號(hào)碼校驗(yàn)位錯(cuò):最后一位應(yīng)該為:8";
return false;
}
break;
case 5:
if (c != 7) {
error.innerHTML = "";
error.innerHTML = "身份證號(hào)碼校驗(yàn)位錯(cuò):最后一位應(yīng)該為:7";
return false;
}
break;
case 6:
if (c != 6) {
error.innerHTML = "";
error.innerHTML = "身份證號(hào)碼校驗(yàn)位錯(cuò):最后一位應(yīng)該為:6";
return false;
}
break;
case 7:
if (c != 5) {
error.innerHTML = "";
error.innerHTML = "身份證號(hào)碼校驗(yàn)位錯(cuò):最后一位應(yīng)該為:5";
return false;
}
break;
case 8:
if (c != 4) {
error.innerHTML = "";
error.innerHTML = "身份證號(hào)碼校驗(yàn)位錯(cuò):最后一位應(yīng)該為:4";
return false;
}
break;
case 9:
if (c != 3) {
error.innerHTML = "";
error.innerHTML = "身份證號(hào)碼校驗(yàn)位錯(cuò):最后一位應(yīng)該為:3";
return false;
}
break;
case 10:
if (c != 2) {
error.innerHTML = "";
error.innerHTML = "身份證號(hào)碼校驗(yàn)位錯(cuò):最后一位應(yīng)該為:2";
return false;
}
}
} else {//15位身份證號(hào)
if (!isNumber(StrNo)) {
error.innerHTML = "";
error.innerHTML = "身份證號(hào)碼錯(cuò)誤,前15位不能含有英文字母!";
return false;
}
}
return true;
}
/**
* 驗(yàn)證身份證件中的日期是否合法有效
* @param iY
* @param iM
* @param iD
* @param _id
* @return
*/
function isValidDate(iY, iM, iD, _id) {
if (iY > 2200 || iY < 1900 || !isNumber(iY)) {
document.getElementById(_id).innerHTML = "";
document.getElementById(_id).innerHTML = "輸入身份證號(hào),年度" + iY + "非法!";
return false;
}
if (iM > 12 || iM <= 0 || !isNumber(iM)) {
document.getElementById(_id).innerHTML = "";
document.getElementById(_id).innerHTML = "輸入身份證號(hào),月份" + iM + "非法!";
return false;
}
if (iD > 31 || iD <= 0 || !isNumber(iD)) {
document.getElementById(_id).innerHTML = "";
document.getElementById(_id).innerHTML = "輸入身份證號(hào),日期" + iD + "非法!";
return false;
}
return true;
}
/**
* 驗(yàn)證是否為數(shù)字
* @param oNum
* @return
*/
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;
}