1. 程式人生 > 實用技巧 >身份證有效性的驗證

身份證有效性的驗證

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;
        }
    }
}


參考圖