首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python计算身份证第18位(校验码)来判断身份证是否输入正确

前言 身份证编码规则如下:根据〖中华人民共和国国家标准GB11643-1999〗中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。...校验码身份证最后一位)是根据前面十七位数字码,按照ISO7064:1983.MOD11-2校验码计算出来的检验码。...从1999年10月1日起,全国实行公民身份证号码制度,居民身份证编号由原15位升至18位。...前6位为地址码;第七位至14位为出生日期码,此码由6位数改为8位数,其中年份用4位数表示;第15位至17位为顺序码,取消了顺序码中对百岁老人使用的特定编号;第十八位为校验码,主要是为了校验计算机输入公民身份证号码的前...校验码计算方法 将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。

4.8K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    CRC校验码

    循环冗余校验码(CRC)的基本原理是:在K位信息码后再拼接R位的校验码,整个编码长度为N位,因此,这种编码也叫(N,K)码。...根据G(x)可以生成K位信息的校验码,而G(x)叫做这个CRC码的生成多项式。...移位:将原信息码(kbit)左移R位 (R是多项式的最高次幂,即在信息码的后面补上R个0) (2)相除:将(1)中移位好的编码作为被除数,将多项式看成二进制码作为除数(取异或),得到的R位余数就是CRC校验码...2、此题生成多项式有4位(R+1)(注意:4位的生成多项式计算所得的校验码为3位,R为校验码位数),要把原始报文C(X)左移3(R)位变成1010 000 3、用生成多项式对应的二进制数对左移3位后的原始报文进行模

    5.2K71

    圣经中的校验码

    于是犹太人发明了一种类似于今天计算机和通信中所应用的校验码的方法。 他们把每一个希伯来字母对应一个数字,这样把每行文字对应的数字加起来便得到一个特殊的数字,这个数字便成为了这一行的校验码。...同样的办法,对于每一列也是这样处理,把每一列文字对应的数字加起来,就得到了这一列的校验码。...当犹太学者抄写完一页《圣经》时,他们需要把每一行和每一列文字对应的数字加起来,得到行和列的校验码,如果每一行和每一列的校验码和原《圣经》的校验码一致,则说明抄写正确,没有出现错误的文字。...如果发现某一行的校验码和原《圣经》的校验码不一致,则说明该行的文字中和原《圣经》不一致,出现了抄写错误的情况。但是这一行有很多文字,到底是哪个文字抄写错误了,我们暂时还不得而知。...当发现某行的校验码不一致时,这时去检查这一行所有的列的检验码,肯定会有一列的校验码和原《圣经》一列的校验码不一致的情况,这样,通过行和列双重的校验码,可以很快定位到抄写错误的文字,然后和原《圣经》对比改正即可

    94120

    【软考学习7】数据校验——海明校验码、循环校验码、奇偶校验码

    ---- 二、CRC 循环校验码 CRC 循环校验码是一个只能检错但不能纠错的校验码。 2.1 基本原理 在进行信息编码时,在数据尾部添加一串校验位,让编码后的数据和生成多项式相除且余数为零。...---- 三、海明校验码【重点】 3.1 编码规则 海明校验码的编码规则: 下标为 2 的次方的,为校验位,其余位置为数值位,如下表所示。...---- 四、奇偶校验码 奇偶校验码可分为奇校验码和偶校验码。...简单来说在原始报文的尾部(或头部)加一位校验位,奇校验码的校验位等于原始报文中 1 个数对 2 取余,偶校验码 的校验位等于原始报文中 0 个数对 2 取余,如下图所示。...---- 五、总结 本文学习了计算机数据校验的流程,学习了常见的校验方法,比如海明校验码、循环校验码、奇偶校验码,其中海明校验码不但可以检错,还可以纠错,另外两种只能检错不能纠错。

    75220

    校验身份证号码

    之前在做项目的时候遇到了需要校验身份证号码,最初始的想法就是校验一下是否数字还有就是校验长度,后来想到有的身份证号的最末尾数字是X,于是又加入了一层判断末尾数为X的判断。...于是就在网上搜了一下,发现身份证号码是有规律和算法的,下面来看一下 根据〖中华人民共和国国家标准 GB 11643-1999〗中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成...排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。 地址码表示编码对象常住户口所在县(市、旗、区)的行政区划代码。...校验码是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。 出生日期计算方法。... 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 有了上面的算法就产生了如何利用js

    2.6K32

    使用FME验证身份证号码

    内容简介 本篇推送,将简单介绍一下怎么使用FME来验证身份证号码。 身份证号码 结构: 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。...校验码算法 将本体码各位数字乘以对应加权因子并求和,除以11得到余数,根据余数通过校验码对照表查得校验码。 加权因子: ? 校验码: ?...身份证号码验证 了解过身份证的组成以及验证规则之后,下面就要开始验证了。 验证方式 身份证号的验证,可以分为这么几个部分:1、地址码验证,2、出生日期验证,3、顺序码验证,4、校验码验证。...其中地址码验证比较简单,只需提取出身份证的前6位,与县级行政区划代码做个验证即可。顺序码的验证,只需将第17位提取出来做奇偶性与性别的验证即可。所以接下来的验证将着眼于两部分:日期与校验码!...所以这个身份证号码是有问题的。 ? 验证码验证 根据身份证的验证码规则,需要将身份证的每一位乘上其加权因子,然后再与11取余,得到的余数再到对应的校验码表中,查找对应的校验码

    2.1K20

    【GPLT】L1-016【PAT乙级】查验身份证

    1位校验码组成校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9, 10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};然后将计算的和对11取模得到值Z者除外;最后按照以下关系对应...ž值与校验码M的值: Z:0 1 2 3 4 5 6 7 8 9 10 M:1 0 X 9 8 7 6 5 4 3 2 现在给定一些身份证号码,请你验证校验码的有效性,并输出有问题的号码。...输入描述: 输入第一行给出正整数N(<= 100)是输入的身份证号码的个数。随后N行,每行给出1个18位身份证号码。 输出描述: 按照输入的顺序每行输出1个有问题的身份证号码。...好好缕了下思路之后,先建立俩个数组分别用来存放权值分配和校验码M。然后取消cin与stdin的同步压压惊,真的怕TLE,毕竟要对若干个18位数的身份证每一位进行校验。...Z,根据题意可知,可以根据ž值来找到对应的校验码中号的值,若IsTrue运算为真但校验码中号和身份证最后一位不相等,这个身份证号也是错误的,需要对错误的身份证号进行输出。

    54310

    身份证号码验证算法

    做项目的时候需要对拿到的数据进行“清洗”,比如剔除一些不可能存在的身份证号码。查阅了网上的身份证号码验证算法,自己也总结一下。...(一)18身份证号码的结构 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。 排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码。 ...4、校验码计算步骤 (1)十七位数字本体码加权求和公式  S = Sum(Ai * Wi), i = 0, ... , 16 ,先对前17位数字的权求和  Ai:表示第i位置上的身份证号码数字值(0~9...:"+test.getValidateCode("14230219700101101")); //该身份证校验码:3 } } (三)说明 1.程序可以根据已有的17位数字本体码,获取对应的验证码...2.该程序可以剔除验证码不正确的身份证号码。 3.15位的身份证出生年份采用年份后2位,没有最后1位校验码。 4.完整的身份证18位,最后一位校验位可能是非数字。

    6.3K10

    二代身份证编码规则及校验代码实现

    本文主要讨论的是二代身份证编码规则及其Java代码实现,下面的校验方式还不是特别严谨,由于只校验了前两位的省份信息,中间六位的出生日期信息和最后一位的校验码信息,故对于部分不满足要求的证件号码刚好同时满足了这里提到的几个条件...当我们输入身份号码进行实名认证的时候,根据校验码算法可以初步判断你输入身份证号码格式是否正确。...1.2 校验码算法 将本体码各位数字乘以对应加权因子并求和,除以11得到余数,根据余数通过校验码对照表查得校验码。...余数 0 1 2 3 4 5 6 7 8 9 10 校验码 1 0 X 9 8 7 6 5 4 3 2 (每个余数对应的校验码) 1.2.3 应用举例 某公民的身份证号码是34052419800101001X..."6", "5", "4", "3", "2"}; 2.4.2 计算第18位校验码 /** * 计算身份证的第十八位校验码 * @param cardIdArray * @return */ public

    1.6K20

    身份证号码验证算法

    做项目的时候需要对拿到的数据进行“清洗”,比如剔除一些不可能存在的身份证号码。查阅了网上的身份证号码验证算法,自己也总结一下。...(一)18身份证号码的结构 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。 排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码。 ...4、校验码计算步骤 (1)十七位数字本体码加权求和公式  S = Sum(Ai * Wi), i = 0, ... , 16 ,先对前17位数字的权求和  Ai:表示第i位置上的身份证号码数字值...:"+test.getValidateCode("14230219700101101")); //该身份证校验码:3 } } (三)说明 1.程序可以根据已有的17位数字本体码,获取对应的验证码...2.该程序可以剔除验证码不正确的身份证号码。 3.15位的身份证出生年份采用年份后2位,没有最后1位校验码。 4.完整的身份证18位,最后一位校验位可能是非数字。

    2.4K60

    涨姿势:用Python完成15位18位身份证的互转

    image 最近工作中刚好要清洗一批客户数据,涉及到身份证号码15位和18位的转换,特意研究了下,在这里分享下。 身份证号码的构成 既然谈到了身份证转换,那就需要先了解下证件号码的构成。 ?...image 公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成; 排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。...一位校验码校验码按照 **ISO 7064:1983.MOD 11-2 **校验码计算出来的检验码。 校验码计算方法 1、将前面的身份证号码17位数分别乘以不同的系数。...解决思路 15位转18位:即身份证号码的前六位数字 + '19' + 身份证第六位以后的数字 + 校验码 (不要问我为什么加19这种白痴(´⊙ω⊙`) @?¥&?...的问题,当然是因为只有19世纪的人才可能拥有15位的身份证号啦) 校验码计算方法就更简单了,将这17位数字和系数相乘的结果相加除以11匹配余数对应的号码即可。

    2.4K10

    身份证号码验证算法

    查阅了网上的身份证号码验证算法,自己也总结一下。 (一)18身份证号码的结构 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。...4、校验码计算步骤 (1)十七位数字本体码加权求和公式 S = Sum(Ai * Wi), i = 0, ... , 16 ,先对前17位数字的权求和 Ai:表示第i位置上的身份证号码数字值(0~9...0 1 2 3 4 5 6 7 8 9 10 校验码: 1 0 X 9 8 7 6 5 4 3 2 (二)根据17位数字本体码获取最后一位校验码程序实例 public class Id18 {...:"+test.getValidateCode("14230219700101101")); //该身份证校验码:3 } } (三)说明 1、程序可以根据已有的17位数字本体码,获取对应的验证码...2、该程序可以剔除验证码不正确的身份证号码。 3、15位的身份证出生年份采用年份后2位,没有最后1位校验码。 4、完整的身份证18位,最后一位校验位可能是非数字。

    1.9K50
    领券