最近注册一个网站,居然让我输入个人身份证号,身份证号是个人信息,怎么能告诉你呢?
输入正确的身份证号没有任何问题。
我就仅仅改了最后一位,就告诉我身份证号不对,你是怎么知道的呢?
所以,搜了下身份证号的验证方式,写了如下程序:
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,蒙混过关。