身份证号校验规则全面解析与实战指南

作者:梅琳marlin2024.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校验码系统。

校验步骤

  1. 加权因子求和:将前17位数字分别与对应的加权因子相乘(加权因子为7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2),然后将乘积相加。

  2. 对11取余:将上一步得到的和除以11,取余数。

  3. 查表得校验码:根据余数通过校验码对照表(’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 {

  1. private static final int[] WEIGHT_FACTORS = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
  2. private static final String[] CHECK_CODES = {"1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"};
  3. public static boolean validateIDCard(String idCard) {
  4. if (idCard == null || idCard.length() != 18) {
  5. return false;
  6. }
  7. int sum = 0;
  8. for (int i = 0; i < 17; i++) {
  9. sum += (idCard.charAt(i) - '0') * WEIGHT_FACTORS[i];
  10. }
  11. int mod = sum %
article bottom image

相关文章推荐

发表评论