身份证加权因子的计算由来


(1) 十七位数字本体码加权求和公式
       S = Ai * Wi, i = 2, ... , 18
       Y = mod(S, 11)
       i: 表示号码字符从右至左包括校验码字符在内的位置序号
       Ai:表示第i位置上的身份证号码字符值
       Wi:表示第i位置上的加权因子
       i:      18    17    16     15    14    13    12    11    10    9     8     7     6     5    4    3    2    1
       Wi:    7      9     10      5      8      4      2      1      6     3     7     9    10    5    8    4    2    1


(2) Y值对应的校验码字符值:
       Y:            0    1    2    3    4    5    6    7    8    9    10
       校验码:   1     0    X    9    8    7    6    5    4    3    2



试算一个:身份证号是14010519590215222a1
i:      18    17    16     15    14    13    12    11    10    9     8     7     6     5    4    3    2    1
Ai:     1      4      0       1       0     5       1     9      5     9     0     2     1     5    2    2    2    a1
Wi:    7      9     10      5      8      4      2      1      6     3     7     9    10    5    8    4    2    1
根据公式  S = Ai * Wi=7+36+0+5+0+20+2+9+30+27+0+18+10+25+16+8+4=217
217/11=19+8/11
Y = mod(S, 11)=mod(217,11)=8
所以,检验码为4,该人的身份证号为140105195902152224




注:本文转载自:http://hi.baidu.com/niuhongjuan/item/2e5c6a62cbdaf02668105b1e





  • 3
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
身份证校验码是用来验证身份证号码是否有效的一位数字。校验码是通过对身份证号码的前17位数字按照一定的算法进行处理得到的。如果身份证号码最后一位与计算出的校验码不一致,那么该身份证就是无效的。 下面是使用Python实现身份证校验码的示例代码: ```python def validate_id_card(id_card): # 将身份证号码的前17位转换为整数列表 id_list = [int(x) for x in id_card[:17]] # 加权因子 weight_factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2] # 校验码对应值 check_code_dict = { 0: '1', 1: '0', 2: 'X', 3: '9', 4: '8', 5: '7', 6: '6', 7: '5', 8: '4', 9: '3', 10: '2' } # 计算身份证号码前17位与加权因子的乘积之和 sum = 0 for i in range(17): sum += id_list[i] * weight_factor[i] # 取模得到校验码对应的值 check_code = check_code_dict[sum % 11] # 判断身份证号码的校验码是否正确 if check_code == id_card[17]: return True else: return False # 调用函数进行身份证校验 id_card = '110101199001011234' # 身份证号码 result = validate_id_card(id_card) print(result) # 输出:True ``` 这段代码中,我们定义了一个`validate_id_card`函数,该函数接收一个身份证号码作为参数,并返回一个布尔值,表示该身份证号码是否有效。函数内部首先将身份证号码的前17位转换为整数列表,然后根据加权因子和校验码对应值的规则计算出校验码,最后判断身份证号码的校验码是否与计算出的校验码一致。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值