身份证号校验系列 第一篇:身份证号的介绍

时间:2024-02-15 13:04:53

      以前总是感觉没有时间,也感觉自己技术水平并不够,如果妄自尊大,写一些东西,总感觉有些鸡肋,所以一直不太敢自己真正的发表一些自己学习和总结的东西,可是今天受大神启发,其实写博客也没什么,写好写坏不重要,每个写博客的大神们,估计也是从自己现在看来很烂的博客开始写起的,就当定期总结一下自己的学习成果就好了,也可以让自己的知识逐渐的系统化。所以,今日起决定,以后会经常更新一些新的自我总结,望,看过本人博客的博友们能够给一些诚恳的建议,更欢迎 留言做技术交流。好了,废话不多说,我们开始进入正题...

以下是 本人对在工作当中应用的身份证号的校验方法的一些总结:

一:简要介绍一下身份证号

    首先,身份证号 分为:一代身份证 和 二代身份证

    1:一代身份证(长度:15位)

  example: 232128 900826 061

  • 各位含义:

    1-2位:省、自治区、直辖市代码;

    3-4位:地级市、盟、自治州代码;

    5-6位:县、县级市、区代码;

    7-12位:出生年月日(格式:yymmdd);

        如 example的15位的身份证号7-12位,900826 代表出生年月为:1990年8月26日;

        (注意哦!这里不包含 年的前两位19 这是与后面要说的18位的身份证号的第一个区别)

     13-15位:3位的顺序码,代表 同一地区、同年、同月、同日出生的人的编号;其中第15位代表性别:单数-->男,双数-->女

        如 example的15位的身份证号13-15位,061 代表的就为 男性;

     (注意哦!没有最后一位 “校验码”  这是和后面要说的18位的身份证号的第二个区别)

  实际上,15位的一代身份证号已经退出历史舞台,不再使用,原存在的一代身份证号,已做了 “升位” 处理;

  • 升位处理:

    . 第一个改变(即 上文第一个区别的位置):出生年月日的位置,原 yymmdd 转换为 yyyymmdd, 即:在yy前加19, 形如 19yymmdd(估计1900年以前 出生的人也用不到身份证拉:]) 

    . 第二个改变(即 上文第二个区别的位置):在第18位添加了 校验码(是按照 ISO 7064:1983.MOD 11-2校验码计算出来的验证码);

 

  2:二代身份证(长度:18位)

  example: 131081 19840521 141 ?

  • 各位含义:

    1-2位:省、自治区、直辖市代码;

    3-4位:地级市、盟、自治州代码;

    5-6位:县、县级市、区代码;

    7-14位:出生年月日(格式:yyyymmdd);

     15-17位:3位的顺序码,代表 同一地区、同年、同月、同日出生的人的编号;其中第17位代表性别:单数-->男,双数-->女

        如 example的18位的身份证号15-17位,141 代表的就为 男性;

     18位:校验码,是按照 ISO 7064:1983.MOD 11-2校验码计算而来;

 

    另附:省、自治区、直辖市代码表 一张,以供参考:

    详细(省、自治区、直辖市)(地级市、盟、自治州代码)(县、县级市、区代码),即 身份证号前六位代码可参考: 最新省、自治区、直辖市代码表

    

    

序号代码省、自治区、直辖市
1 11 北京市
2 12 天津市
3 13 河北省
4 14 山西省
5 15 内蒙古自治区
6 21 辽宁省
7 22 吉林省
8 23 黑龙江省
9 31 上海市
10 32  江苏省
11 33 浙江省
12 34 安徽省
13 35 福建省
14 36 江西省
15 37 山东省
16 41 河南省
17 42 湖北省
18 43 湖南省
19 44 广东省
20 45 广西壮族自治区
21 46 海南省
22 50 重庆市
23 51 四川省
24 52 贵州省
25 53 云南省
26 54 *自治区
27 61 陕西省
28 62 甘肃省
29 63 青海省
30 64 宁夏回族自治区
31 65 **自治区
32 71 *省
33 81 香港特别行政区
34 82 澳门特别行政区