java實現 身份證號碼驗證

2021-08-29 21:06:11 字數 1332 閱讀 7212

號碼的結構

公民身份號碼是特徵組合碼,由十七位數字本體碼和一位校驗碼組成。排列順序從左至右依次為:六位數字位址碼 ,八位數字出生日期碼 ,三位數字順序碼 和一位數字校驗碼 。

校驗碼的計算

(1)十七位數字本體碼 加權求和公式

s = sum(ai * wi), i = 0, ... , 16 ,先對前 17 位數字的權求和

ai: 表示第 i 位置上的身份證號碼數字值

wi: 表示第 i 位置上的加權因子

wi: 7   9   10   5   8   4   2   1   6   3   7   9   10   5   8   4   2 s:

=(4*7+5*9+2*10+1*5+2*8+4*4+1*2+9*1+8*6+3*3+0*7+7*9+0*10+3*5+0*8+3*4+9*2)

= 306;

(2)計算模

y = mod(s, 11)

y=306%11=9;

(3)通過模得到對應的校驗碼

y:     0   1   2   3   4   5   6   7   8   9   10

校驗碼

: 1   0   x   9   8   7   6   5   4   3   2

class verifyidcard ;

// 校驗碼

final int vi = ;

private int ai = new int[18];

public verifyidcard()

// 校驗身份證的校驗碼

public boolean verify(string idcard)

if (idcard.length() != 18)

string verify = idcard.substring(17, 18);

if (verify.equals(getverify(idcard)))

return false;

} // 15位轉18位

public string uptoeighteen(string fifteen)

// 計算最後一位校驗值

public string getverify(string eighteen)

if (eighteen.length() == 17)

for (int i = 0; i < 17; i++)

remain = sum % 11;

} return remain == 2 ? "x" : string.valueof(vi[remain]);

}}

java驗證身份證號碼

介紹 yyyy mm dd 375 0 十八位 yy mm dd 75 0 十五位 地區 1 9 d 年的前兩位 18 19 23 d 1800 2399 年的後兩位 d 月份 0 1 9 10 11 12 天數 0 2 1 9 10 20 30 31 閏年不能禁止29 三位順序碼 d 兩位順序碼 ...

Java 身份證號碼驗證

之前的身份證號碼只是做了一些簡單的數字 長度,生日等驗證 最近碰到乙個框架的身份證號碼驗證有些奇怪,在網上搜了一通,終於找到了規則,所以在這裡記錄一下,一遍以後再用,也分享給廣大開發者.驗證身份證號碼 param snumber 身份證號碼 public static boolean check s...

身份證號碼驗證

說明 驗證身份證的有效性 引數 cid 身份證號碼 返回 地方 出生時間 性別 private string checkcidinfo string cid if cid.length 18 char c cid cid.length 1 bool last false if c 0 c 9 c a...