身份证最后一位检验算法
用python写了一段身份证最后一位校验是否正确。
'''
(一)18身份证号码的结构公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码。
1、地址码 表示编码对象常住户口所在县(市、旗、区)的行政区域划分代码,按GB/T2260的规定执行。
2、出生日期码 表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日代码之间不用分隔符。
3、顺序码 表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。
4、校验码计算步骤(1)十七位数字本体码加权求和公式 S = Sum(Ai * Wi), i = 0, ... , 16 ,先对前17位数字的权求和 Ai:表示第i位置上的身份证号码数字值(0~9) Wi:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 (表示第i位置上的加权因子)
(2)计算模 Y = mod(S, 11)(3)根据模,查找得到对应的校验码 Y: 0 1 2 3 4 5 6 7 8 9 10 校验码: 1 0 X 9 8 7 6 5 4 3 2'''def checkcode(num18):Weight=[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2]tablecM={0:'1',1:'0',2:'X',3:'9',4:'8',5:'7',6:'6',7:'7',8:'4',9:'3',10:'2'}sum=0num17=num18[0:17]checkbit=num18[-1]for i, data in enumerate(num17):sum += int(data)*Weight[i]result=(tablecM.get(sum%11)==checkbit)return resultif __name__=='__main__':print (checkcode('110101199003070193'))
身份证最后一位检验算法相关推荐
- 身份证最后一位校验算法(ISO 7064:1983.MOD 11-2)
很多游戏账号申请,或者某些网站注册时需要填身份证号,当输入错误的身份证号时会提示出错,感觉好像真能识别身份证信息一样,其实不然. 实质上由于其没有权限接入公安系统,它只能根据最后一位校验位来判断该身份 ...
- 身份证最后一位校验算法-(ISO 7064:1983.MOD 11-2)
根据<中华人民共和国国家标准GB 11643-1999>中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成.排列顺序从左至右依次为:六位数字地址码, ...
- java 身份证第18位数字的算法
原来在注册一个网站的时候,发现输入身份证会被验证出来. 即使前面的全正确,但是如果最后一位不正确的话,也会被验证出来的. 原来在身份证的号码,是有规则的.特别是最后一位. 下面是18位身份证最后一位的 ...
- 身份证号码含义及最后一位校验算法(ISO 7064:1983.MOD 11-2)
身份证的各位数字代表的含义 ISO 7064:1983.MOD11-2校验码计算法 : (身份证校验码-第18位) 校验码计算(Python 代码) 身份证的各位数字代表的含义 1.前1.2位数字表示 ...
- 算法实现身份证最后一位校验码
一直以为身份证最后几位是随机生成的,今日与人交谈,发现自己太天真了,现在让我们来研究一下身份证最后一位校验码 根据<中华人民共和国国家标准GB 11643-1999>中有关公民身份号码的规 ...
- JS实现身份证号码15位转18位时最后一位的算法
<SCRIPT LANGUAGE="JavaScript"> <!-- var lastNumber; var id = "15位身份 ...
- 新旧身份证合法性验证及相互转换算法(三):Java身份证号码验证及将15位转换18位
package test; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 身份证号码验证 * */ pub ...
- JS判断身份证(15位18位)的合法性
<html> <head> <meta http-equiv="Content-Type" content="text/html; char ...
- c语言编fermat素数检验,记信安实验(一):Fermat 素性检验算法
前言:在密码学中很多地方都需要素数,很多库直接提供检验是否是素数的函数,该文章通过Fermat 素性检验算法实现素数检验(C语言). 一.实验内容 给定奇整数m大于等于3和安全参数k,判断m是否为合数 ...
最新文章
- VC env.Please set `DISTUTILS_USE_SDK=1`
- Flume日志收集系统架构详解--转
- C的function call與stack frame心得
- dio设置自定义post请求_Flutter Dio简单二次封装和自定义Header
- 使用openswan构建lan-to-lan ×××(KLIPS)
- C#LeetCode刷题之#39-组合总和(Combination Sum)
- 如何在Python中获取周数?
- Bailian2797 最短前缀【字典树】
- sql数据库去重语法_数据库去重语句
- 用PS抽出滤镜让头发溶于背景nbsp;简单…
- 小程序源码:全新实用工具证件照制作微信小程序源码下载支持多种证件生成与制作
- w10连接远程计算机控制,win10远程电脑怎么设置_win10通过远程桌面控制其他电脑的方法...
- 将一个数组分成2个数组,使得2个数组的差值最小
- 2021届BiliBili校招 数据分析/后端开发 笔试题记录
- 朱松纯团队新作:让AI「读懂」人类价值观!登上Science Robotics
- 2021年第一季度Sumap网络空间测绘CVE漏洞趋势安全分析报告
- Memcached的LRU策略
- 常见的前端考试面试题目【vue,react,css,six】
- Google学术映像
- 智博通 ZBT WG2626原机编程器
热门文章
- python程序运行按什么键_太惨!学Python方法用错,直接从入门到放弃!
- Bugku-闪的好快 60
- 在线学习算法(Online Learning)理论与实践
- Flutter 图片保存到本地
- R7000装Kali时屏幕颜色异常解决办法
- 软件工程学习进度表(十六周)
- Android7.0以上File.createTempFile异常:java.io.IOException: Unable to create temporary file
- C语言之运算符,表达式和语句总结
- Centos安装.net core SDK
- Python爬虫实战之 爬取王者荣耀皮肤