公民身份号码
公民身份号码俗称身份证号,是中华人民共和国为中国大陆每个公民从出生之日起、港澳台地区居民从申请居住证之日起、外国人在中国大陆申请外国人永久居留身份证之日起,编定的唯一的、终身不变(变更性别、更正出生日期、解决重号问题等极少数情况除外)的身份代码,在中华人民共和国公民办理涉及政治、经济、社会生活等权益事务方面广泛使用。中华人民共和国公安部负责公民身份号码的编制和组织实施工作。
1984年第一代居民身份证开始签发时,其编号为15位,相对于18位编码,其出生日期码的年份只有两位,且缺少校验码。1999年8月26日中华人民共和国国务院发布《国务院关于实行公民身份号码制度的决定》(国发〔1999〕15号),这个文件规定自1999年10月1日起在全国建立和实行公民身份号码制度,根据同年颁布的国家标准,公民身份号码升至现行的18位。
组成方式
中华人民共和国国家标准GB 11643-1999《公民身份号码》中规定:公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。
18位数字组合的方式是:
1 | 1 | 0 | 1 | 0 | 2 | Y | Y | Y | Y | M | M | D | D | 8 | 8 | 8 | X |
地址码 | 出生日期码 | 顺序码 | 校验码 |
- 地址码
- 对于内地户籍居民,地址码是公民首次获得身份号码(例如新生儿出生登记、无户口人员登记户口)时所在县(市、镇、区)的行政区划代码,如110102是北京市西城区,如果日后行政区划出现调整或将户口迁往外地地址码也不会改变。由于新生儿通常根据属人主义确定户籍,故地址码并不总能代表公民的出生地。
- 对于持有港澳台居民居住证的港澳台居民,地址码根据居民的实际身份分配香港(地址碼81)、澳門(地址碼82)和臺灣(地址碼83)的行政区划代码,只精確到省級,第三位至第六位全部为0。因此,香港、澳門和台湾居民的地址碼分别为810000、820000和830000。
- 需要注意的是,虽然在中华人民共和国国务院办公厅2018年8月19日公布的《港澳台居民居住证申领发放办法》中,台湾居民分配到的公民身份号码地址碼为830000,但在实际分配中,台湾省的行政区划代码为71而并非83[1][2][3][4]。
- 出生日期码表示公民出生的公历年(4位)、月(2位)、日(2位)。
- 顺序码是给同地址码同出生日期码的人编定的顺序号,其中奇数分配给男性,偶数分配给女性。
- 最后一位是校验码,这里采用的是ISO 7064:1983, MOD 11-2校验码系统[5]。校验码为一位数,但如果最后采用校验码系统计算的校验码是“10”,碍于身份证号码为18位的规定,则以“X”代替校验码“10”。
例如,假设有一名女性,出生地为北京市西城区(对应地址码为110102),出生于1984年4月6日(对应出生日期码为19840406),登记时的顺序码为970(女性分配为偶数,男性为奇数),则校验码为X,完整的公民身份号码为11010219840406970X。如果这名女性出生在香港,并同时持有香港永久性居民身份证,那么在申请港澳台居民居住证时,其对应地址码就为810000,又因为出生于1994年8月23日(对应出生日期码为19940823),登记时的顺序码为002(女性分配为偶数,男性为奇数),则校验码为1,完整的公民身份号码为810000199408230021。
2023版中华人民共和国外国人永久居留身份证的证件号码也为18位。虽然和公民身份号码相仿,但并不完全等同。
校验码计算方法
- 1. 将身份证号码从左至右标记为
;
即为校验码;
- 2. 计算权重系数
;其中
表示求余数。
所以:
i | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Wi | 7 | 9 | 10 | 5 | 8 | 4 | 2 | 1 | 6 | 3 | 7 | 9 | 10 | 5 | 8 | 4 | 2 | 1 |
- 3. 计算
- 4.
以下是用C++写的校验码检查程序:
bool check(char id[]) {int index, sum, num;for (sum = index = 0; index < 17; index++)sum += (pow(2, 17 - index) % 11) * (id[index] - '0');num = (12 - (sum % 11)) % 11;if (num < 10)return (num == id[17] - '0');elsereturn (id[17] == 'X');}
以及用R语言编写的小程序:
check_CHN_ID <- function(id) { ids <- strsplit(as.character(id),'')[[1]] if(length(ids) != 18) return(FALSE) s <- sum(2^(17:1) %% 11 * as.numeric(ids[1:17])) n <- (12 - s%%11) %% 11 ifelse(n<10, n == as.numeric(ids[18]), toupper(ids[18]) == 'X')}
应用
- 标记在中华人民共和国社会保障卡上和所配套的数据库中,作为社会保障号码。(1999年前,GB 11643-1989的名称即“社会保障号码”)
- 标记在中华人民共和国居民身份证、居民户口簿上和所配套的户籍人口数据库中。(因此,1999年后“居民身份证号”就是“公民身份号码”)
- 标记在中华人民共和国机动车驾驶证上和所配套的数据库中。
- 标记在中华人民共和国残疾人证上和所配套的数据库中。
- 标记在中华人民共和国港澳台居民居住证上和所配套的数据库中。
- 标记在中华人民共和国外国人永久居留身份证所配套的数据库中。
- 作为自然人(公民)统一社会信用代码,用于信用体系(信用中国)制度建设。[6]
重复号码
因为手工升号的原因,第二代身份证曾存在171万例重复的号码,公安部开展户口清理整顿工作后,公民身份号码重号人数至2017年已减至8人[7][8]。
注释
参考文献
外部链接
![](http://upload.wikimedia.org/wikipedia/commons/thumb/4/4c/Wikisource-logo.svg/38px-Wikisource-logo.svg.png)