身份证号校验规则全面解析与实战指南
2024.08.28 13:45浏览量:28简介:本文详细解析了身份证号的校验规则,包括15位与18位身份证号的构成、校验码的计算方法,以及如何通过程序进行校验,旨在为非专业读者提供清晰易懂的技术指导。
千帆应用开发平台“智能体Pro”全新上线 限时免费体验
面向慢思考场景,支持低代码配置的方式创建“智能体Pro”应用
身份证号校验规则全面解析与实战指南
引言
身份证号码作为个人身份的唯一标识,其准确性和合法性对于各类信息验证至关重要。本文将深入解析身份证号的校验规则,包括号码的构成、校验码的计算方法,并通过实例展示如何进行校验,帮助读者轻松掌握这一技术要点。
身份证号构成
身份证号码分为15位和18位两种,其中15位身份证已基本退出历史舞台,目前广泛使用的是18位身份证。
15位身份证:由6位地址编码(前2位省份,中间2位城市,后2位区县)+ 6位出生日期(年月日,缺省世纪)+ 3位顺序码组成。第15位为性别码,奇数为男性,偶数为女性。
18位身份证:在15位身份证的基础上增加了3位,即6位地址编码+ 8位出生日期(完整的年月日)+ 3位顺序码+ 1位校验码。第17位同样表示性别,奇数为男性,偶数为女性。
校验码计算方法
18位身份证的最后一位是校验码,用于检验身份证的正确性。校验码的计算采用ISO 7064:1983.MOD 11-2校验码系统。
校验步骤
加权因子求和:将前17位数字分别与对应的加权因子相乘(加权因子为7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2),然后将乘积相加。
对11取余:将上一步得到的和除以11,取余数。
查表得校验码:根据余数通过校验码对照表(’1’, ‘0’, ‘X’, ‘9’, ‘8’, ‘7’, ‘6’, ‘5’, ‘4’, ‘3’, ‘2’)查找对应的校验码。
示例
假设身份证号前17位为11010519491231002
,计算校验码过程如下:
- 加权因子求和:
1*7 + 1*9 + 0*10 + 1*5 + 0*8 + 5*4 + 1*2 + 9*1 + 4*6 + 9*3 + 1*7 + 2*9 + 3*10 + 1*5 + 0*8 + 0*4 + 2*2 = 105
- 对11取余:
105 % 11 = 2
- 查表得校验码:
2
对应校验码表中的2
,因此完整的身份证号为110105194912310022
。
校验规则应用
在实际应用中,我们可以通过编写程序来自动校验身份证号。以下是一个简单的Java代码示例,用于校验18位身份证号的有效性:
```java
public class IDCardValidator {
private static final int[] WEIGHT_FACTORS = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
private static final String[] CHECK_CODES = {"1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"};
public static boolean validateIDCard(String idCard) {
if (idCard == null || idCard.length() != 18) {
return false;
}
int sum = 0;
for (int i = 0; i < 17; i++) {
sum += (idCard.charAt(i) - '0') * WEIGHT_FACTORS[i];
}
int mod = sum %

发表评论
登录后可评论,请前往 登录 或 注册