1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 校验身份证号码是否正确

校验身份证号码是否正确

时间:2020-08-08 22:58:21

相关推荐

校验身份证号码是否正确

18位身份证号码各位的含义:

1-2位省、自治区、直辖市代码;

3-4位地级市、盟、自治州代码;

5-6位县、县级市、区代码;

7-14位出生年月日,比如19670401代表1967年4月1日;

15-17位为顺序号,其中17位(倒数第二位)男为单数,女为双数;(如果是实名认证需要填入性别,可以使用填入的身份证号码校验填入的信息是否正确)

18位为校验码,0-9和X。作为尾号的校验码,是由把前十七位数字带入统一的公式计算出来的,计算的结果是0-10,如果某人的尾号是0-9,都不会出现X,但如果尾号是10,那么就得用X来代替,因为如果用10做尾号,那么此人的身份证就变成了19位。X是罗马数字的10,用X来代替10。

// 计算最后一位校验码 本体码各位数字乘以对应加权因子并求和 除以11得到余数是校验码 idcard是身份证// 本体码String code = idcard.substring(0, 17);// 转换成数组int[] IDnums = new int[code.length()];for (int i = 0; i < code.length(); i++) {IDnums[i] = Integer.parseInt(String.valueOf(code.charAt(i)));}// 加权因子int[] x = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };// 对应字符char[] checkCode = {'1', '0', 'x', '9', '8', '7', '6', '5', '4', '3', '2' };int sum = 0;for (int i = 0; i < code.length(); i++) {int n = code.charAt(i) - 48;sum = sum + n * x[i];}sum = sum % 11;// 验证最后一位校验码和计算出来的不匹配则不同过验证if (!idcard.substring(17, 18).equals(String.valueOf(checkCode[sum]))) {return "该用户身份证号码不正确";}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。