身份证校验码筛选正确的身份证

本文声明

此文仅用于技术科普,教育与研究用途,请勿用于商业甚至非法用途,否则一切后果自负。若用户利用此文章而受到惩处,本人及本平台对其行为概不负责,亦不承担任何连带责任。

教程开始

学校要填写对学校的反馈,填写非本校的学生 或者输入错误 就会提示:

图片[1]-身份证校验码筛选正确的身份证-山海云端论坛

一张身份证18为号码分为几段 分别是

图片[2]-身份证校验码筛选正确的身份证-山海云端论坛

可以看到最后一位是判断真实性的

图片[3]-身份证校验码筛选正确的身份证-山海云端论坛

计算方法

20220511022805240

上图身份证前17位: 32070219750101403 

上面下面相乘再相加 用上面公式

S = 7*3+9*2+10*0+5*7+8*0+4*2+2*1+1*9+10*0+5*1+8*4+4*0+2*3 = 136

再去取模11   136 mod 11 = 4 

再去找检验码位次值的表

20220511023432217

对应的是8 所以 320702197501014038 是正确的 其他数就是错的

Python实现判断

小思路:

假设我知道她女朋友的出生身份和生日哈 当然越精确越好

姓名:xxx 出生地:黑龙江省哈尔滨市  生日:20010101 性别:

图片[6]-身份证校验码筛选正确的身份证-山海云端论坛

xxxxxx20010101 xxx(顺序码)   x(校验码)

顺序码 1-2 位 00-99 最后一位性别 [0,2,4,6,8]

把所有结果打印出来

district = ['230102', '230103', '230104', '230108', '230109', '230110', '230111', '230112',
            '230113', '230123', '230124', '230125', '230126', '230127', '230128', '230129',
            '230183', '230184']
birth = [i + '20010223' for i in district]
birth_two = [s + '0' + str(i) if i < 10 else s + str(i) for i in range(100) for s in birth]
gril = [a + str(i) for i in range(0, 9, 2) for a in birth_two]
last = [a + str(i) for i in range(9) for a in gril]
print(last)
#81000个

这时候在加上校验一下:

7363个欸  这时候可以写一个 异步爬虫 阔以很快

再见!!!!

© 版权声明
THE END
喜欢就支持一下吧
点赞14赞赏 分享
评论 共8条

请登录后发表评论