以前总是感觉没有时间,也感觉自己技术水平并不够,如果妄自尊大,写一些东西,总感觉有些鸡肋,所以一直不太敢自己真正的发表一些自己学习和总结的东西,可是今天受大神启发,其实写博客也没什么,写好写坏不重要,每个写博客的大神们,估计也是从自己现在看来很烂的博客开始写起的,就当定期总结一下自己的学习成果就好了,也可以让自己的知识逐渐的系统化。所以,今日起决定,以后会经常更新一些新的自我总结,望,看过本人博客的博友们能够给一些诚恳的建议,更欢迎 留言做技术交流。好了,废话不多说,我们开始进入正题...
以下是 本人对在工作当中应用的身份证号的校验方法的一些总结:
一:简要介绍一下身份证号
首先,身份证号 分为:一代身份证 和 二代身份证
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 | 澳门特别行政区 |