中华人民共和国公民身份号码
2020-12-04 06:08:47
中华人民共和国公民身份号码是中华人民共和国为中国大陆每个公民从出生之日起,及港澳台居民从申请居住证之日起,编定的唯一的、终身不变的身份代码,在中华人民共和国公民办理涉及政治、经济、社会生活等权益事务方面广泛使用。中华人民共和国公安部负责公民身份号码的编制和组织实施工作。
1999年8月26日中华人民共和国国务院发布《国务院关于实行公民身份号码制度的决定》(国发15号),这个文件规定自1999年10月1日起在全国建立和实行公民身份号码制度。
中华人民共和国国家标准GB 11643-1999《公民身份号码》中规定:公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。
18位数字组合的方式是:
所以:
以下是用C++写的校验码检查程序:
bool check(char id) { int index, sum, num; for (sum = index = 0; index < 17; index++) sum += (pow(2, 17 - index) % 11) * (id - '0'); num = (12 - (sum % 11)) % 11; if (num < 10) return (num == id - '0'); else return (id == 'X');}
以及用R语言编写的小程序:
check_CHN_ID <- function(id) { ids <- strsplit(as.character(id),'')] if(length(ids) != 18) return(FALSE) s <- sum(2^(17:1) %% 11 * as.numeric(ids)) n <- (12 - s%%11) %% 11 ifelse(n<10, n == as.numeric(ids), toupper(ids) == 'X')}
应用
- 标记在中华人民共和国居民身份证上和所配套的数据库中。(因此,1999年后“居民身份证号”就是“公民身份号码”)
- 标记在居民户口簿上和所配套的数据库中。
- 标记在中华人民共和国机动车驾驶证上和所配套的数据库中。
- 标记在中华人民共和国残疾人证上和所配套的数据库中。
- 标记在中华人民共和国港澳台居民居住证上和所配套的数据库中。
- 作为自然人(公民)统一社会信用代码,用于信用体系(信用中国)制度建设。
重复号码
在实行18位编码及全国数据统一管理前,原有的公民身份号码为15位,15位编码相对于18位编码,出生日期码的年份只有两位,缺少校验码。
因为手工升号的原因,第二代身份证曾存在171万例重复的号码,公安部开展户口清理整顿工作后,公民身份号码重号人数已减至8人。