的身分证
验证身份证号码的正确性,不能仅仅通过正则表达式来验证,我们都知道我国的身份证一共是18位,由十七位数字本体码和一位校验码组成。
其排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码。
-
<李>地址码(身份证号码前六位),表示编码对象常住户口所在县(市、旗、区)的行政区域划分代码,按GB/T2260的规定执行.1-2位省,自治区,直辖市代码,3 - 4位地级市,盟,自治州代码;5 - 6位县,县级市,区代码。李>
<李>出生日期码(身份证号码第七位到第十四位),表示编码对象出生的年,月,日,按GB/T7408的规定执行,年,月,日代码之间不用分隔符。李>
<李>顺序码(身份证号码第十五位到十七位),表示在同一地址码所标识的区域范围内,对同年,同月,同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。李>
<李>校验码(身份证号码最后一位),是根据前面十七位数字码,按照ISO 7064:1983。国防部的佳绩校验码计算出来的检验码。如果某人的尾号是0 - 9,都不会出现X,但如果尾号是10,那么就得用X来代替,X是罗马数字的10,用X来代替10,可以保证公民的身份证符合国家标准。
李>
校验码计算步骤
十七位数字本体码加权求和公式
S=总和(Ai * Wi),我=0,…,16日,先对前17位数字的权求和
Ai:表示我第位置上的身份证号码数字值(0 ~ 9)
Wi: 7 8 9 10 5 4 3 2 1 6 7 8 9 10 5 4 2(表示我第位置上的加权因子)
计算模
Y=国防部(年代,11)
根据模,查找得到对应的校验码
Y: 0 1 2 3 4 5 6 7 8 9 10
校验码:1 0 X 9 8 7 6 5 4 3 2
对应的代码校验如下:
Java
公开课IdentityCard { int[]重量={7、9、10、5、8、4、2、1、6、3、7、9、10、5、8、4、2};//十七位数字本体码权重 char[]有效={' 1 ',' 0 ',' X ', ' 9 ', ' 8 ', ' 7 ', ' 6 ', ' 5 ', ' 4 ', ' 3 ', ' 2 '};//mod11,对应校验码字符值///卡是除去最后一位前17位的号码 公共字符getValidateCode(字符串卡){ int和=0; int模式=0; for (int i=0; i< card.length();我+ +){ 和=和+ Integer.parseInt (String.valueOf (card.charAt(我)))*重量(我); } 模式=% 11总和; 返回有效(模式); } } >之前 python
def get_id_card_verify_number (id_card): 因素=[7、9、10、5、8、4、2、1、6、3、7、9、10、5、8、4、2] check_code_list=[1 0 ' X ' 9 8 7、6、5、4、3、2] check_sum=总和((a * b对a、b zip(因素,(int(一)id_card [0, 1]]))) 返回check_code_list [check_sum % 11] >之前
总体代码(代码地址:https://github.com/lucas234/identity-card):
以上所述是小编给大家介绍的python验证身份证信息的方法详解整合,希望对大家有所帮助,如果大家有任何疑问请给我留的言,小编会及时回复大家的。在此也非常感谢大家对网站的支持!
python验证身份证信息实例代码