@[toc]
每个人都有一个独特的身份证号,名字可能会有重名,但身份证号不会。
XXYYZZ ABCD EF GH IJK L 身份证号长度是18位,前17位全部是数字,第18位多数人是数字,少数人是字母“X”,实际是罗马数字10。
前六位:省市县
前6位:XXYYZZ 省市县(户口所在地的行政区代码)
中间八位:出生年月日
ABCD为出生年,EF为出生月,GH为出生日;IJK为顺序编码(在同一区域内,对同一天出生的人员编制的顺序号)。
倒数第二位:性别
K为性别代码(单数为男,双数为女);
由上可知,如果知道真实的身份证号,那么就可以得到地址、生日和性别。
最后一位:校验码
L为末位校验码(按统一的公式计算出来,计算结果是数字0-10,用X代替10)。
根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。
身份证的最后一位是根据前面的十七位数字码而生成的校验码,所以生成校验码就会有一个算法的存在。
1)将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2;
2)将这17位数字和系数相乘的结果相加;
3)用加出来的和除以11,看余数是多少;
4)余数只可能有0-1-2-3-4-5-6-7-8-9-10这11个数字。其分别对应的最后一位身份证的号码为1-0-X-9-8-7-6-5-4-3-2;
在网上找到了省市区六位代码写成了文件shenfen.txt
,简单尝试了一下,可能还有很多疏漏。
# -*- coding: utf-8 -*-
"""
Created on Sat Apr 3 20:11:39 2021
@author: lenovo
"""
import sys
number = input('请输入身份证号:')
lis1 = [int(i) for i in number]
lis2 = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]
if len(number)!=18:
print('身份证号位数有误')
sys.exit(0)
verify = sum(lis1[i]*lis2[i] for i in range(17))%11
test1 = [i for i in range(11)]
test2 = [1,0,'X',9,8,7,6,5,4,3,2]
month = [i+1 for i in range(12)]
year = [i for i in range(1900,2021)]
day = [i+1 for i in range(31)]
for i in range(len(test1)):
if i!=2:
if test1[i] == verify:
if test2[i]==eval(number[-1]):
pass
else:
print('身份证号错误')
sys.exit(0)
else:
if test1[i] == verify:
if test2[i]==number[-1]:
pass
else:
print('身份证号错误')
sys.exit(0)
f = open('shenfen.txt','r',encoding = 'utf-8')
txt = f.readline()
flag = 1
for txt in f:
info = txt.split()
#print(info)
if info[0] == number[:6]:
if int(number[6:10]) in year:
if int(number[10:12]) in month:
if int(number[12:14]) in day:
print('\n地区:{}'.format(info[1]))
print('生日:{}年{}月{}日'.format(number[6:10],number[10:12],number[12:14]))
if int(number[-2])%2!=0:
print('性别:男')
else:
print('性别:女')
flag = 0
else:
print('身份证号错误')
if flag:
print('未查询到结果')
f.close()
代码放在了我的gitee上,顺便复习了一下git的使用哈哈。
git init
git status
git add shenfen.txt shenfenzheng.py
git commit -m 'update'
git remote add identity 'https:www.gitee/Waston-swx/identity.com'
git remote -v
git pull origin master
git push origin master
线上查询的网址:http://www.dffyw.com/sfzcx/
网友评论