模拟生成身份信息及查验身份
时间: 2023-12-09 12:04:02 浏览: 94
好的,我可以为您提供一个简单的身份证号码生成和查验程序。请注意,这个程序仅用于学习和娱乐目的,生成的身份证信息并非真实有效的身份证信息,切勿用于任何违法或不道德的行为。
身份证号码生成:
```python
import random
# 随机生成一个有效的身份证号码
def generate_id_number():
# 随机生成前6位地区编码
region_code = str(random.randint(110000, 659004))
# 随机生成出生日期
birth_year = str(random.randint(1900, 2021))
birth_month = str(random.randint(1, 12)).zfill(2)
birth_day = str(random.randint(1, 28)).zfill(2)
birth_date = birth_year + birth_month + birth_day
# 随机生成顺序码
order_code = str(random.randint(1, 999)).zfill(3)
# 计算校验码
id_number = region_code + birth_date + order_code
weight_factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
check_code_map = {0: "1", 1: "0", 2: "X", 3: "9", 4: "8", 5: "7", 6: "6", 7: "5", 8: "4", 9: "3", 10: "2"}
total = 0
for i in range(17):
total += int(id_number[i]) * weight_factor[i]
check_code = check_code_map[total % 11]
id_number += check_code
return id_number
# 测试生成的身份证号码
id_number = generate_id_number()
print(id_number)
```
身份证号码查验:
```python
# 校验身份证号码是否有效
def check_id_number(id_number):
if len(id_number) != 18:
return False
weight_factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]
check_code_map = {0: "1", 1: "0", 2: "X", 3: "9", 4: "8", 5: "7", 6: "6", 7: "5", 8: "4", 9: "3", 10: "2"}
total = 0
for i in range(17):
total += int(id_number[i]) * weight_factor[i]
check_code = check_code_map[total % 11]
return check_code == id_number[-1]
# 测试校验身份证号码
print(check_id_number(id_number))
```
您可以使用以上代码生成和校验身份证号码,根据需要适当修改程序以生成和校验其他类型的身份信息。