身份证号码验证规则及Java实现
需积分: 9 21 浏览量
更新于2024-09-11
收藏 48KB DOC 举报
身份证验证及规则
身份证验证及规则是指根据中国大陆地区的身份证号码规则来验证身份证的合法性。身份证号码由十八位数字组成,每一位数字都有其特定的含义和计算规则。
首先,身份证号码的前六位数字表示编码对象常住户口所在县(市、旗、区)的行政区划代码。其中,第1、2位表示户籍所在省份,第3、4位表示户籍所在城市,第5、6位表示户籍所在区或县。
其次,身份证号码的第七位到第十四位表示编码对象出生的年、月、日,其中年份用四位数字表示,年、月、日之间不用分隔符。例如,1981年05月11日就用19810511表示。
再次,身份证号码的第十五位到十七位为同一地址码所标识的区域范围内,对同年、月、日出生的人员编定的顺序号。其中,第十七位奇数分给男性,偶数分给女性。
最后,身份证号码的第十八位数字是通过计算得到的。计算规则如下:
1. 将前面的身份证号码17位数分别乘以不同的系数,从第一位到第十七位的系数分别为7、9、10、5、8、4、2、1、6、3、7、9、10、5、8、4、2、3、4、0、5、2、4、1、9、8、0、0、1、0、1、0、1。
2. 将这17位数字和系数相乘的结果相加。
3. 用加出来和除以11,看余数是多少?
4. 余数只可能有0、1、2、3、4、5、6、7、8、9、10这11个数字。其分别对应的最后一位身份证的号码为1、0、X、9、8、7、6、5、4、3、2。
通过上述规则,可以编写Java代码来验证身份证的合法性。例如,可以编写一个函数来检查身份证号码的合法性,如下所示:
```java
public boolean checkIdCard(String idCard) {
// 将身份证号码分解成前17位和最后一位
String first17 = idCard.substring(0, 17);
String lastDigit = idCard.substring(17, 18);
// 计算身份证号码的最后一位数字
int sum = 0;
for (int i = 0; i < 17; i++) {
sum += (first17.charAt(i) - '0') * getWeight(i);
}
int remainder = sum % 11;
String expectedLastDigit = getExpectedLastDigit(remainder);
// 比较计算结果和实际身份证号码的最后一位数字
return expectedLastDigit.equals(lastDigit);
}
private int getWeight(int i) {
int[] weights = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
return weights[i];
}
private String getExpectedLastDigit(int remainder) {
String[] lastDigits = {"1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"};
return lastDigits[remainder];
}
```
通过这种方式,可以编写一个Java函数来验证身份证的合法性。
2013-03-07 上传
2012-10-24 上传
2012-11-07 上传
2012-01-11 上传
2012-07-19 上传
2017-06-19 上传
fengxinghai00
- 粉丝: 0
- 资源: 6
最新资源
- JavaScript实现的高效pomodoro时钟教程
- CMake 3.25.3版本发布:程序员必备构建工具
- 直流无刷电机控制技术项目源码集合
- Ak Kamal电子安全客户端加载器-CRX插件介绍
- 揭露流氓软件:月息背后的秘密
- 京东自动抢购茅台脚本指南:如何设置eid与fp参数
- 动态格式化Matlab轴刻度标签 - ticklabelformat实用教程
- DSTUHack2021后端接口与Go语言实现解析
- CMake 3.25.2版本Linux软件包发布
- Node.js网络数据抓取技术深入解析
- QRSorteios-crx扩展:优化税务文件扫描流程
- 掌握JavaScript中的算法技巧
- Rails+React打造MF员工租房解决方案
- Utsanjan:自学成才的UI/UX设计师与技术博客作者
- CMake 3.25.2版本发布,支持Windows x86_64架构
- AR_RENTAL平台:HTML技术在增强现实领域的应用