身份证号第18位的计算
来源:互联网 发布:易迈互联比阿里云好吗 编辑:程序博客网 时间:2024/05/17 09:16
身份证号每一位号码的意义
首选需要声明两点,
- 第18位为
x
:其实对应与编码系统中的10
(十),因为进制的关系了; - 第18位的取值是前面17位通过一定的编码规则(ISO 7064:1983.MOD 11-2)生成出来的,而非随机。
你说不随机就不随机了?下面我们通过Python,实现对第18位数字的生成(根据前面17位)。
首先来看ISO 7064:1983.MOD 11-2 的计算方法(见中华人民共和国公民身份号码 中文维基):
将身份证号码从右至左标记为
a1,a2,…,a18 (我们的目标即是计算a1 )计算权重系数
wi=2i−1%11 (权重系数为该位的数值无关,仅与下标,也即位置有关,可见wi,i=1,2,…,18 是固定的)>>> w =[2**(17-i)%11 for i in range(18)][7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1]
计算
s=∑i=218aiwi a1=(12−(s%11))%11
def split(n): # 将身份证号的前17位split成一位一位的,组成一个list返回 r = [] while n: r.append(n%10) n //= 10 r.reverse() return rdef gen_code(a): n = len(a) w = [2**(n-i)%11 for i in range(n)] s = sum([a[i]*w[i] for i in range(n)]) return (12-s%11)%11
if __name__ == '__main__': print(gen_code(split(身份证号的前17位)))
0 0
- 身份证号第18位的计算
- 汇总15位身份证号和18位身份证号的区别
- 15位的身份证号转为18位
- 校验18位身份证号是否是有效的身份证号
- 身份证号第18位(效验码)计算方法 用于检测身份证号是否正确
- js身份证号码的校验,支持15位身份证号和18位身份证号
- 身份证号 15位与18位间的转换
- 15位身份证号转换为18位身份证号
- 身份证号15->18位
- 根据18位身份证号,提取出此人的出生年月日,
- iOS验证身份证号的有效性(仅18位号)
- 15位身份证号转18位
- 身份证号转换15位与18位
- 身份证号15位转18位
- 身份证号:15位转为18位
- 旧的身份证号吗(15位)如何转换为新的(18位)
- 身份证号每一位号码的意义
- 写了个15位身份证号升级为18位的SQL语句
- pixhawk飞控解锁方法
- 函数式编程语言彻解彻悟
- 微信公众号入门笔记(一)启用服务器配置
- HDU5617 Jam's maze(dp)
- asterisk服务器搭建 入门教程
- 身份证号第18位的计算
- nodejs---常用npm命令
- (scala书籍编写)word 2007 目录格式乱的解决办法:编辑word 宏
- Kamailio安装配置指南(绝对原创,亲测有效)
- 数据仓库概述
- WebService
- SET IDENTITY_INSERT
- HDU 5616 Jam's balance(暴力枚举子集)
- iOS Core Animation,图层的树状结构