超全面详细的身份证号码编码原理,拿走不谢! |
您所在的位置:网站首页 › 秘鲁电话多少位 › 超全面详细的身份证号码编码原理,拿走不谢! |
首先简要介绍一下身份号码的组成及含义。 国标GB 11643规定,全国所有公民的身份号码都是18位的特征码。所谓特征码,就是号码本身反映了公民的一些基本特征,比如籍贯、年龄、性别等。 身份号码前6位是地址码,表示公民出生时户口所在地的地址,此后不随户籍变化而改变。 紧接着的8位是出生日期码,表示公民出生的具体日期。 接下来的3位是顺序码,区县公安机关按顺序给辖区内同年同月同日出生的公民进行编码。顺序码除了起到区分同辖区内同年同月同日出生的公民,还包含了公民的性别特征,公安机关在编制顺序码时,对男性公民编制为奇数,女性为偶数。 最后一位是校验码,引入校验码的目的,是为了避免输入错误。因为身份号码本体码长达17位,这么长的数字串,在录入电脑系统时,难免输错。引入校验码以后,电脑系统就能根据预定的算法检测出录入是否有误,从而确保录入的正确性。 校验码是根据前面17位本体码数字的值,按照统一的算法计算出来的。计算出的校验结果可能为0~9,还可能为10。如果是10,就用X替代。之所以要用单字符X替代两位数的10,是为了身份号码位数的统一。统一的位数有助于系统的管理与维护。而之所以用X而不是ABC或其他字符来替代,是因为在罗马字符中X恰好就是表示序号10的意思。 一、地址码 地址码表示编码对象(即公民)常住户口所在县(市、旗、区)的行政区划代码,按国标GB/T 2260的规定执行。 国标GB/T 2260规定了我国县级及县级以上行政区划的数字代码和字母代码。其中的数字代码采用三层六位的层次结构,按层次分别表示我国省(自治区、直辖市、特别行政区)、市(地区、自治州、盟)、县(自治县、县级市、旗、自治旗、市辖区、林区、特区)。 行政区划数字代码码位结构从左到右的含义是: 第一层即前两位代码表示省、自治区、直辖市、特别行政区。 按照国务院目前的划分,我国有34个省(自治区、直辖市、特别行政区),数量超过了10个所以1位数字不够用,需要采用2位数字来进行编码。 虽然国标GB/T 2260没有明确指明,但通过其具体编码可以看出:为了适应以后省级行政区划的变更,国标GB/T 2260对这34个省并不是按照顺序进行编码的,而是按照各省所在区域,又划分为华北、东北、华东、华中华南、西南、西北、台湾、香港澳门等8个大的区域,每个区域包含3~7个省级区划。用第一位表示区域码,第二位表示该区域内的省的编码。 引入区域的概念后,既保持了各省代码的相对连续,又方便了以后对省级行政区划变更的扩展。 比如重庆市以前是隶属于四川省的一个省辖市,升级为直辖市后,新的代码就从西南区域中分配(新分配到的区划代码是50)。假如以后深圳市也有机会升级为直辖市的话,就可以从华南区域分配省级区划代码(比如40或47~49)。目前各区域都预留有4~7个代码作为备用。 具体的区域编码如下图所示:(注:区域编码是博主总结的,国标里面并没有明确规定) —01~20/51~70表示市,01、02还用与表示直辖市所辖市辖区/县汇总码; —21~50表示地区、自治州、盟; —90表示省(自治区)直辖县级行政区划汇总码。 上面这段话可能比较晦涩,参照下图来看就很好理解了。 —01~20表示市辖区、地区(自治州、盟)辖县级市、市辖特区以及省(自治区)直辖县级行政区划中的县级市,01通常表示市辖区汇总码; —21~80表示县、自治县、旗、自治旗、林区、地区辖特区; —81~99表示省(自治区)辖县级市。 这段话也比较晦涩,也请参照下图来理解。 表示日期的方式有很多种,比如可以采用年月日的方式,也可以采用年周的方式。年月日还可以有不同的编码:20170825、2017825、8252017、2582017等都可以表示2017年8月25日。身份号码里的出生日期码则只能采用20170825这一种方式。这也是最符合我们中国人习惯的一种方式。 三、顺序码 顺序码表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。 对于顺序码,国标GB 11643只规定了其位数为三位数字,并要求奇数分配给男性,偶数分配给女性,除此之外,没有对其做进一步细化。这就给了区县级公安机关根据本区县实际情况灵活编制的权利。 从实际身份证号码来看,区县级公安局在编制顺序码时,应该是将乡镇/街道区划代码融入进了顺序码中。 国标GB/T 10114规定,县级以下行政区划指镇、乡、民族乡及街道;县级以下行政区划代码由三位数字构成,具体划分为:001~099表示街道;100~199表示镇、民族镇;200~399表示乡、民族乡、苏木(内蒙的基层行政单位)。 从上面规定可以看出,国标GB/T 10114只是对县级以下行政区划代码作了一个框架性的规定,具体的编码交由各省、自治区、直辖市标准化管理机构负责编制并作为地方标准。因此,各省的县级以下行政区划代码的编码规则不一定完全相同。 细心的读者可能会有担心,3位顺序码最多容纳1000人,如果某一区县在某一天同时有500个以上的男性或女性出生,那么第501个及其后面的人显然就分配不到合法的身份号码。 其实这个问题无需我们担心,相关部门在制定这个标准时,已经根据我国的人口现状,各区县在以往历年的出生人口统计中确知,所有区县的一天出生人口远远达不到500个之多。 四、校验码 校验码采用ISO 7064:1983,MOD 11-2校验算法对前面的地址码、出生日期码和顺序码进行校验。具体校验公式如下图所示: 那我们要怎么计算校验位呢? 只需将上面公式稍作变换,具体是将a1×w1从求和表达式中提取出来,因为w1=(2^(1-1))(mod 11)=1,于是我们就得到了下面的公式: 根据上面公式(2),只要求出第2~18位的∑ai×wi ,就能换算出校验码的值。具体换算表如下图所示: 下面举例介绍校验码的详细计算方法,假设某男性公民身份号码的本体码为11010820171221591,其校验码字符值的计算方法及步骤为: 第一步,列出该身份号码的本体码,结果如下:(待计算的校验码也一并列出来) 第五步,对11取模:∑ai×wi(mod 11)=212%11=3。 第六步,求出校验码字符值,根据(3+a1)≡1(mod 11),算出a1=9。 因此,该男性公民身份号码的本体码为110108201712215919。 到这里完整的身份证编码原理就全部介绍完了。你看懂了吗? |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |