黑马程序员技术交流社区
标题:
一个关于身份证的验证-许庭洲
[打印本页]
作者:
赵力
时间:
2012-6-29 20:01
标题:
一个关于身份证的验证-许庭洲
看到许庭洲 在一个帖子中回复关于二代身份证验证的问题 严重表示不理解,求详细解释。。谢谢。
举个二代身份证是否是真的小例子:某男性的身份证号码是34052419800101001X。我们要看看这个身份证是不是合法的身份证;
首先:将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7. 9 .10 .5. 8. 4. 2. 1. 6. 3. 7. 9. 10. 5. 8. 4. 2. ,可得出,前17位的乘积和是189 ;
然后:用189除以11得出的结果是17 + 2/11,也就是说余数是2;
最后:通过对应规则就可以知道余数2对应的数字是x。所以,这是一个合格的身份证号码。
作者:
吴凡
时间:
2012-6-29 23:58
你这是提问还是自问自答,你也看到了第18位是根据前17位计算出来的,所以如果一个人随便写18位的身份号码百分之90第18位验证码跟前17位函数求出来的不一样,那么这就不是一个合法的身份证(也就是瞎写的,但合法的也未必是真实的,因为你知道这个函数后前17位瞎写后自己计算出18位就合法了)。
作者:
赵力
时间:
2012-7-4 09:44
悟凡 发表于 2012-6-29 23:58
你这是提问还是自问自答,你也看到了第18位是根据前17位计算出来的,所以如果一个人随便写18位的身份号码百 ...
哦 这样子我一直以为这第18位是随机给的 原来是计算出来的,这个从来没听说过 很是纳闷 所以才有此问。
作者:
许庭洲
时间:
2012-7-4 10:00
某男性的身份证号码是34052419800101001X,身份证的最后一位是校验码,从1-10,如果排到10的话,号码就会多一位,因此采用罗马数字X,表示10。
作者:
肖琦
时间:
2012-7-4 11:03
身份证号码组成介绍:
身份证是由17位数字和一个
效验码
(最后一位)组成
效验码的算法
:
效验码
=(12-前17位数每位数的
数权和
%11)%11
数权
=此位数的
位权
*此数
位权
=2的
序列号
此幂%11
身份证的
序列号
是从左到右是17-1的排序的
这里涉及到几个词:效验码、数权、位权、序列号,读起来比较绕,多读几遍对比身份证号码看,就好理解点;
希望对你有帮助.....
作者:
肖琦
时间:
2012-7-4 11:11
顺便科普点身份证的小知识:
前六位是地区
中间八位是出生年月日
后两位是你当天出生的次序(并非绝对)
第十七位是性别位:单数为男,双数为女
最后一位是效验码:算出来的效验码如果是等于10就是字母X,否则就是次数
虽然中国人多,这样的算法还是能保证没有重号的{:soso_e113:}
作者:
ckz0409
时间:
2012-7-5 09:27
了解!没事还得多多普及一下自己的常识!
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2