天天看点

身份证号验证js程序

最近注册一个网站,居然让我输入个人身份证号,身份证号是个人信息,怎么能告诉你呢?      
输入正确的身份证号没有任何问题。      
我就仅仅改了最后一位,就告诉我身份证号不对,你是怎么知道的呢?
所以,搜了下身份证号的验证方式,写了如下程序:       
function idcode(code){
var factor = [ 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ];
code=code.split("")
//校验位
var parity = [ 1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2 ];
var sum = 0;
var ai = 0;
var wi = 0;
for (var i = 0; i < 17; i++)
{
    ai = code[i];
    wi = factor[i];
    sum += ai * wi;
}
var last = parity[sum % 11]
code.push(last)
return code.join("")

}      

用法:输入 前17位,生成能够校验成功的第18位,返回完整可用身份证号

比如我自己的身份证号      
61052520181221432X      

  我的身份证号我本来就能记住,为方便记忆,我只修改第17位,然后用程序生成正确的第18位

  更改第17位 有0-9 共10种可能,程序如下:

for (var i = 0; i < 10; i++)
{
    code='6105252018122143'+i.toString() 
    console.log(idcode(code).substring(16))
}

返回结果如下:      

 03

 11

 2X

 38

 46

 54

 62

 70

 89

 97

这样,除了我自己的2X,我可以随便用个,就可以用假的身份证号蒙混过关。

 再来试试网站,用第一个吧,03,纯粹为了好记,

ok,蒙混过关。