• 身份证号码算法解析与Java代码实现


    中国的身份证号码是一串唯一的标识符,由18位数字组成,用于标识中国公民的个人信息。它不仅包含个人的出生日期和顺序码,还包含了地区信息。下面我们将介绍中国身份证号码的结构以及验证算法,并提供了相应的Java代码示例。

    身份证号码结构

    1. 前1-6位代表所在地区的行政区划代码。
    2. 第7-14位代表持有人的出生年月日,例如19900101代表1990年1月1日。
    3. 第15-17位是同一地区、同一出生日期和同一性别的人的顺序码。
    4. 第18位为校验码,用于验证身份证号码的有效性。

    身份证号码验证算法

    根据中国身份证号码的编码规则,可以通过以下步骤验证身份证号码的有效性:

    1. 首先使用正则表达式验证身份证号码的基本格式是否正确。
    2. 接着计算前17位的加权和,加权系数为固定值。
    3. 根据加权和计算出的结果,与校验码进行比对验证身份证号码的正确性。

    以下是用Java实现的身份证号码验证代码示例:

    javaCopy code
    import java.util.regex.Pattern;
    
    public class ChineseIDValidator {
    
        public static boolean isValidID(String id) {
            String pattern = "^[1-9]\\d{16}[0-9Xx]$";
            if (!Pattern.matches(pattern, id)) {
                return false;
            }
    
            // 获取身份证前17位
            String id17 = id.substring(0, 17);
            char[] chars = id17.toCharArray();
            int[] coefficient = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };
            char[] verifyCode = {'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'};
            int sum = 0;
            for (int i = 0; i < 17; i++) {
                sum += (chars[i] - '0') * coefficient[i];
            }
            char lastChar = id.charAt(17);
            if (lastChar == 'x' || lastChar == 'X') {
                lastChar = 'X';
            }
            return lastChar == verifyCode[sum % 11];
        }
    
        public static void main(String[] args) {
            String id1 = "11010519491231002X";
            String id2 = "11010519491231002x";
            String id3 = "12345678901234567";
            System.out.println(id1 + " is valid: " + isValidID(id1));
            System.out.println(id2 + " is valid: " + isValidID(id2));
            System.out.println(id3 + " is valid: " + isValidID(id3));
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36

    以上代码示例通过正则表达式验证身份证号码格式的正确性,并使用特定的算法验证了身份证号码的合法性。

    希望本文能够帮助读者了解中国身份证号码的编码规则以及验证算法,并在实际应用中起到一定的指导作用。

  • 相关阅读:
    【0基础学算法】二分查找 (超详细讲解+私人笔记+源码)
    人大女王大学金融硕士项目——披星戴月走过的路,一定可以繁花满地
    Exploring the Emerging Type of Comment for Online Videos: DanMu
    jpa 连接sqlserver 发布tomcat报错 SunJSSE
    css高级 使用
    【智能电网随机调度】智能电网的双层模型时间尺度随机优化调度(Matlab代码实现)
    Spring02
    【云原生】微服务架构SpringCloud和Dubbo的区别?
    C++基类与派生类构造和析构顺序以及虚函数的调用
    HUAWEI 华为交换机 配置 MAC 防漂移 防MAC伪造示例
  • 原文地址:https://blog.csdn.net/mbh12333/article/details/134271618