- /**
- * 中国居民身份证校验码算法
- * @param IDNumber 身份证号码
- * @return 校验成功返回true,否则返回false
- */
- public static boolean IDNumberCheck(String IDNumber) {
- boolean results = false;
- //前17位对应的系数
- int[] verifyCode = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
- //第18位校验码
- String[] checksum = {"1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"};
- if (IDNumber.length() != 18) {
- return results;
- }
- //计算前17位数字
- int aSum = 0;
- for (int i = 0; i < IDNumber.length() - 1; i++) {
- aSum += (Integer.parseInt(IDNumber.substring(i, i + 1)) * verifyCode[i]);
- }
- //校验最后一位校验码
- if (IDNumber.substring(IDNumber.length() - 1).equals(checksum[aSum % 11])) {
- return true;
- }
- return results;
- }
测试代码:
- String ID = "";
- System.out.println(IDNumberCheck(ID));