有时候网站甲方经常要求对客户输入的身份证号进行确认,不能让客户提供虚假信息。当然校验方式有很多种,最稳妥的是向公安机关查询,但是并不是所有企业都有这样的权限的。
那么,我们可以采用校验位的方式进行大体校验,起码能够限制下随便乱敲的客户。

网络上有更成熟的方案,这里只讲解校验位


身份证18位分别是这样的意思:
6位表示地域+8位生日+3位数字顺序码+1位校验码


6位地域前2位表示省,中间两位是市,后两位是县。

其中顺序码末位为奇数,是男性,偶数是女性。

我们可以简单的使用1位校验码进行判断,当然也可以再对生日、地域进行校验,此次我只是解决校验位的问题。

校验方式:
1.将前17位与对应的每位系数相乘,系数是提前设定好的,每位有自己的系数。
每位系数如下
[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]
2.将所有位与系数的乘积加起来。
3.将加和除以11,取余数。
4.按照余数数值,查表得最后一位。
对应表如下:
['1','0','X','9','8','7','6','5','4','3','2']


例如,余数为0,则最后一位为1,余数为2,则最后一位为X。


进行下手动计算。
例如你的身份证号前17位是12345678901234567
计算方式
17+29+310+45+68+74+82+91..........
然后除以11,再取余,再查表。

idnum=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]
younum=''
print('请输入前17位数字')
print('12312320190606000')
younum=str(input(''))

num=0
i=0
while i<17:
    num=num+int(younum[i])*idnum[i]
    i=i+1

end=num%11
endnum=['1','0','X','9','8','7','6','5','4','3','2']
print('最后一位是:'+str(endnum[end]))
print(str(younum[0:17])+str(endnum[end]))
f=open('身份证校验位.txt','w')
f.write('最后一位是:'+str(endnum[end])+'\n'+str(younum[0:17])+str(endnum[end]))
f.close()
这是python3代码,最后会在代码保存位置存储一个身份证号文本文档,以供核验。
声明:

本站所有分享的资源,如无特殊说明或标注,均为网络收集整理。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。点击联系我们处理版权问题

  • 本站名称:追梦人博客
  • 本站永久地址:https://www.dreamren.cn
  • 本网站的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,请联系在线客服进行删除处理
  • 本站一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责
  • 本站一律禁止以任何方式发布或转载任何违法的相关信息,访客发现请向站长举报
  • 本站资源大多存储在云盘,如发现链接失效,请联系我们我们会第一时间更新
  • 如果您喜欢本站,♥点这儿开通会员资助本站
  • 如遇软件内有加群提示,为修改者自留,非本站信息,注意鉴别
  • 这些信息可能会帮助你了解本站:

SVIP会员 关于我们 网址导航 标签云