首页 > Java > 身份证校验方法

身份证校验方法

我国的身份证编制是有标准的,每一位都不是随便瞎写的,就像我国的地图坐标经纬度一样,并不是真是的经纬度,而是人为加入了偏转,被称为:火星坐标系,但是工作中发现很多人并不了解,在工作中,用户输入的身份证号是否正确,我们根据这个规则是可以做初步校验的,当然真是的校验肯定是要通过公安部授权的接口,这是收费的。但是初步校验是真简单的,我个人发现有些系统并没有加入,所以今天写一篇小文章,做一个常用的工具类来校验身份证号,至于具体的规则,大家可以搜一下这个国标:GB11643-1999,代码如下:


package cn.bridgeli.demo;

import org.apache.commons.lang3.StringUtils;
import org.junit.Assert;
import org.junit.Test;

/**
 * @author BridgeLi
 * @date 2022/1/23 15:01
 */
public class IdNoUtil {

    @Test
    public void testId() {
        String IdNo = "";
        boolean b = validateIdNo(IdNo);
        Assert.assertTrue(b);
    }

    public static boolean validateIdNo(String IdNo) {
        if (StringUtils.isBlank(IdNo) || IdNo.length() != 18) {
            return false;
        }
        char[] charArray = IdNo.toCharArray();
        //前十七位加权因子
        int[] idCardWi = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
        //这是除以11后,可能产生的11位余数对应的验证码
        String[] idCardY = {"1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"};
        int sum = 0;
        for (int i = 0; i < 17; i++) {
            int current = Integer.parseInt(String.valueOf(charArray[i]));
            int count = current * idCardWi[i];
            sum += count;
        }
        char idCardLast = charArray[17];
        int idCardMod = sum % 11;
        if (idCardY[idCardMod].equalsIgnoreCase(String.valueOf(idCardLast))) {
            return true;
        } else {
            return false;
        }
    }

}

全文完,如果本文对您有所帮助,请花 1 秒钟帮忙点击一下广告,谢谢。

作 者: BridgeLi,https://www.bridgeli.cn
原文链接:http://www.bridgeli.cn/archives/739
版权声明:非特殊声明均为本站原创作品,转载时请注明作者和原文链接。
分类: Java 标签:
  1. 本文目前尚无任何评论.

请输入正确的验证码