身份證有效性的驗證
阿新 • • 發佈:2020-10-11
public class IdCardVerify { public static boolean idCardVerify(char[] idCardNum){ //身份證的編碼規則(18位) //前六位是地區程式碼,第七位到第十四位出生年月日,第十五、十六為派出所程式碼,第十七為是性別,最後一位是校驗碼 //校驗的計算公式:身份證最後一位=從左到右身份證的數字乘以加權因子求和 % 11 int sum=0; int[] arr= {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};//加權因子 for(int i=16;i>=0;i--){ sum=sum+(idCardNum[16-i]-'0')*arr[16-i];//從左到右身份證的數字乘以加權因子求和 } char check='a'; switch (sum%11){//總數對11取模 case 0:check='1'; break; case 1:check='0'; break; case 2:check='X'; break; case 3:check='9'; break; case 4:check='8'; break; case 5:check='7'; break; case 6:check='6'; break; case 7:check='5'; break; case 8:check='4'; break; case 9:check='3'; break; case 10:check='2'; break; } if(idCardNum[17]==check){ return true; }else{ return false; } } } 參考圖