public class IdentityUtils extends Object
类说明:身份证合法性校验
--15位身份证号码:第7、8位为出生年份(两位数),第9、10位为出生月份,第11、12位代表出生日期,第15位代表性别,奇数为男,偶数为女。 --18位身份证号码 :第7、8、9、10位为出生年份(四位数),第11、第12位为出生月份,第13、14位代表出生日期,第17位代表性别,奇数为男,偶数为女。
* 身份证前6位【ABCDEF】为行政区划数字代码(简称数字码)说明(参考《GB/T 2260-2007 中华人民共和国行政区划代码》): 该数字码的编制原则和结构分析,它采用三层六位层次码结构,按层次分别表示我国各省(自治区,直辖市,特别行政区)、 市(地区,自治州,盟)、县(自治县、县级市、旗、自治旗、市辖区、林区、特区)。 数字码码位结构从左至右的含义是: 第一层为AB两位代码表示省、自治区、直辖市、特别行政区; 第二层为CD两位代码表示市、地区、自治州、盟、直辖市所辖市辖区、县汇总码、省(自治区)直辖县级行政区划汇总码,其中: ——01~20、51~70表示市,01、02还用于表示直辖市所辖市辖区、县汇总码; ——21~50表示地区、自治州、盟; ——90表示省(自治区)直辖县级行政区划汇总码。 第三层为EF两位表示县、自治县、县级市、旗、自治旗、市辖区、林区、特区,其中: ——01~20表示市辖区、地区(自治州、盟)辖县级市、市辖特区以及省(自治区)直辖县级行政区划中的县级市,01通常表示辖区汇总码; ——21~80表示县、自治县、旗、自治旗、林区、地区辖特区; ——81~99表示省(自治区)辖县级市。身份证前6位【ABCDEF】为行政区划数字代码(简称数字码)说明(参考《GB/T 2260-2007 中华人民共和国行政区划代码》): 该数字码的编制原则和结构分析,它采用三层六位层次码结构,按层次分别表示我国各省(自治区,直辖市,特别行政区)、 市(地区,自治州,盟)、县(自治县、县级市、旗、自治旗、市辖区、林区、特区)。 数字码码位结构从左至右的含义是: 第一层为AB两位代码表示省、自治区、直辖市、特别行政区; 第二层为CD两位代码表示市、地区、自治州、盟、直辖市所辖市辖区、县汇总码、省(自治区)直辖县级行政区划汇总码,其中: ——01~20、51~70表示市,01、02还用于表示直辖市所辖市辖区、县汇总码; ——21~50表示地区、自治州、盟; ——90表示省(自治区)直辖县级行政区划汇总码。 第三层为EF两位表示县、自治县、县级市、旗、自治旗、市辖区、林区、特区,其中: ——01~20表示市辖区、地区(自治州、盟)辖县级市、市辖特区以及省(自治区)直辖县级行政区划中的县级市,01通常表示辖区汇总码; ——21~80表示县、自治县、旗、自治旗、林区、地区辖特区; ——81~99表示省(自治区)辖县级市。
身份证前6位【ABCDEF】为行政区划数字代码(简称数字码)说明(参考《GB/T 2260-2007 中华人民共和国行政区划代码》): 该数字码的编制原则和结构分析,它采用三层六位层次码结构,按层次分别表示我国各省(自治区,直辖市,特别行政区)、 市(地区,自治州,盟)、县(自治县、县级市、旗、自治旗、市辖区、林区、特区)。 数字码码位结构从左至右的含义是: 第一层为AB两位代码表示省、自治区、直辖市、特别行政区; 第二层为CD两位代码表示市、地区、自治州、盟、直辖市所辖市辖区、县汇总码、省(自治区)直辖县级行政区划汇总码,其中: ——01~20、51~70表示市,01、02还用于表示直辖市所辖市辖区、县汇总码; ——21~50表示地区、自治州、盟; ——90表示省(自治区)直辖县级行政区划汇总码。 第三层为EF两位表示县、自治县、县级市、旗、自治旗、市辖区、林区、特区,其中: ——01~20表示市辖区、地区(自治州、盟)辖县级市、市辖特区以及省(自治区)直辖县级行政区划中的县级市,01通常表示辖区汇总码; ——21~80表示县、自治县、旗、自治旗、林区、地区辖特区; ——81~99表示省(自治区)辖县级市。 身份证前6位【ABCDEF】为行政区划数字代码(简称数字码)说明(参考《GB/T 2260-2007 中华人民共和国行政区划代码》): 该数字码的编制原则和结构分析,它采用三层六位层次码结构,按层次分别表示我国各省(自治区,直辖市,特别行政区)、 市(地区,自治州,盟)、县(自治县、县级市、旗、自治旗、市辖区、林区、特区)。 数字码码位结构从左至右的含义是: 第一层为AB两位代码表示省、自治区、直辖市、特别行政区; 第二层为CD两位代码表示市、地区、自治州、盟、直辖市所辖市辖区、县汇总码、省(自治区)直辖县级行政区划汇总码,其中: ——01~20、51~70表示市,01、02还用于表示直辖市所辖市辖区、县汇总码; ——21~50表示地区、自治州、盟; ——90表示省(自治区)直辖县级行政区划汇总码。 第三层为EF两位表示县、自治县、县级市、旗、自治旗、市辖区、林区、特区,其中: ——01~20表示市辖区、地区(自治州、盟)辖县级市、市辖特区以及省(自治区)直辖县级行政区划中的县级市,01通常表示辖区汇总码; ——21~80表示县、自治县、旗、自治旗、林区、地区辖特区; ——81~99表示省(自治区)辖县级市。
| 构造器和说明 |
|---|
IdentityUtils() |
| 限定符和类型 | 方法和说明 |
|---|---|
static int |
getIdentityAge(String identityNo)
身份证号取年龄
|
static String |
getIdentityBirth(String identityNo)
身份证号取生日
|
static String |
getIdentityGender(String identityNo)
身份证号取男女
|
static boolean |
isValid18IdentityCard(String cardNo)
判断18位身份证的合法性
根据〖中华人民共和国国家标准GB11643-1999〗中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。
|
static boolean |
isValid18IdentityCardAndAge(String identityNo,
Integer minAge,
Integer maxAge)
验证身份证合法且年龄在范围内
|
static String |
safeIdentityNo(String value)
身份证脱敏
|
static String |
safeName(String value)
姓名脱敏
|
public static boolean isValid18IdentityCard(String cardNo)
判断18位身份证的合法性
根据〖中华人民共和国国家标准GB11643-1999〗中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。 排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。顺序码: 表示在同一地址码所标识的区域范围内,对同年、同月、同 日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配 给女性。
1.前1、2位数字表示:所在省份的代码; 2.第3、4位数字表示:所在城市的代码; 3.第5、6位数字表示:所在区县的代码; 4.第7~14位数字表示:出生年、月、日; 5.第15、16位数字表示:所在地的派出所的代码; 6.第17位数字表示性别:奇数表示男性,偶数表示女性; 7.第18位数字是校检码:也有的说是个人信息码,一般是随计算机的随机产生,用来检验身份证的正确性。校检码可以是0~9的数字,有时也用x表示。
第十八位数字(校验码)的计算方法为: 1.将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
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。5.通过上面得知如果余数是2,就会在身份证的第18位数字上出现罗马数字的Ⅹ。如果余数是10,身份证的最后一位号码就是2。
cardNo - 身份证public static boolean isValid18IdentityCardAndAge(String identityNo, Integer minAge, Integer maxAge)
identityNo - 身份证minAge - 最小年龄maxAge - 最大年龄public static int getIdentityAge(String identityNo)
identityNo - 身份证public static String getIdentityGender(String identityNo)
identityNo - 身份证号public static String getIdentityBirth(String identityNo)
identityNo - 身份证号Copyright © 2024. All rights reserved.