身份证号验证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,蒙混过关。