最代码广告位
Gavin的gravatar头像
Gavin2014-03-13 15:30:55

java身份证最后一位校验码校验工具

18 位身份证最末位是校验码,是按一定的规则产生的,用于校验身份证真伪,按理这规则属于保密的,X 代表的是其中一个校验码,是 10。校验码从 0 到 X 共 11 个。  
校验码是通过一系列数学计算得出来的,具体校验的计算方式如下:  
公式为:∑(Ai×Wi)(mod 11)  
i——表示号码字符从右至左包括校验码在内的位置序号;  
Ai——表示第 i 位置上的号码字符值;  
Wi——示第 i 位置上的加权因子(其值已定),
其数值依据公式 Wi=2^(i-1)(mod 11) 计算得出。
其各位对应的值依次为:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2  
例如:某男性公民身份号码为 34052419800101001V(V为校验码),对前 17 位数字本体码首先按照上面公式加权求和计算: 
i:  18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2  1 
Ai: 3 4 0 5 2 4 1 9 8 0 0 1 0 1 0 0 1 V 
Wi: 7  9  10  5  8  4  2  1  6  3  7  9  10  5  8  4  2  1  
∑(Ai×Wi) =( 21 + 36 + 0 + 25 + 16 + 16 + 2 + 9 + 48 + 0 + 0 + 9 + 0 + 5 + 0 + 0 + 2 ) = 189  
∑(Ai×Wi)(mod 11) = 189 mod 11 = 2 
然后根据计算的结果,从下面的表中查出相应的校验码。其中 X 表示计算结果为 10。 
∑(Ai×Wi)(mod 11): 0 1 2 3 4 5 6 7 8 9 10  
校验码字符值 V:  1  0  X  9 8 7 6 5 4 3 2  
根据上表,查出计算结果为 2 的校验码为 X,
所以该人员的公民身份号码应该为 34052419800101001X。  
如果校验码不符合这个规则,则肯定是假号码。  
关于 18 位身份证号码尾数是“X”的一种解释:
因为按照上面的规则,校验码有 11 个,而不是 10 个,所以不能用 0-9 表示。所以如果尾号是 10,那么就得用 X 来代替,
因为如果用 10 做尾号,那么此人的身份证就变成了 19 位,而 19 位的号码违反了国家标准,并且我国的计算机应用系统也不
承认 19 位的身份证号码。Ⅹ 是罗马数字的 10,用 X 来代替 10,可以保证公民的身份证符合国家标准。

java身份证最后一位校验码校验工具


打赏

文件名:IDCode.java,文件大小:2.651K下载
最代码最近下载分享源代码列表最近下载
筱进GG LV383月24日
太阳太阳月亮星星星星
wutaitai LV12019年3月18日
星星
小钟颖 LV12019年2月22日
星星
chrisb LV22018年8月15日
星星星星
vijayChen LV162018年7月3日
太阳
十小时 LV122018年4月9日
月亮月亮月亮
没有梦想的咸鱼 LV122017年8月6日
月亮月亮月亮
一抹纯白 LV42016年4月25日
月亮
bhunkni LV132016年4月1日
月亮月亮月亮星星
chriss LV272016年4月1日
太阳月亮月亮星星星星星星
最代码最近浏览分享源代码列表最近浏览
筱进GG LV383月24日
太阳太阳月亮星星星星
风步绝 LV11月22日
星星
luohaipeng LV232019年11月19日
太阳月亮星星星星星星
陆66_Nancy LV12019年7月18日
星星
dongzhan LV72019年5月6日
月亮星星星星星星
胡霸霸 LV52019年4月11日
月亮星星
wutaitai LV12019年3月18日
星星
小钟颖 LV12019年2月22日
星星
lw19900921 LV242018年9月19日
太阳月亮月亮
chrisb LV22018年8月15日
星星星星
顶部客服微信二维码底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友