身份证码验证

合集下载

RIGHT函数在身份证号码验证实例的应用

RIGHT函数在身份证号码验证实例的应用

RIGHT函数在身份证号码验证实例的应用简介身份证号码是一串由数字和字符组成的唯一标识符,用于区分不同的个体。

身份证号码中包含了个人的信息和校验位,对于验证身份证号码的合法性和正确性,我们可以利用RIGHT函数进行处理和判断。

RIGHT函数的定义和功能RIGHT函数是一种常用的文本函数,在Excel等电子表格软件中广泛应用。

它用于截取给定字符串中指定长度的最右边字符。

RIGHT(text, num_chars)- text: 待截取的字符串- num_chars: 要截取的字符个数例如,RIGHT("Hello world", 5) 的结果为 "world"。

RIGHT函数在身份证号码验证中的应用身份证号码通常由18个字符组成,由前17位的数字和最后一位的校验位构成。

校验位的计算规则是根据身份证号码前17位数字的加权和,然后取模得到的值通过一定的计算公式转换成对应的校验位数字。

在这个实例中,我们可以利用RIGHT函数方便地截取身份证号码的最后一位校验位,并通过对前17位数字的加权和进行计算,验证身份证号码的合法性。

以下是一个使用RIGHT函数验证身份证号码的示例代码:def verify_id_number(id_number):weight = [int(x) for x in '7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2'.split()]verify_code = '10X'if len(id_number) != 18:return Falsenumber = id_number[:17]last_code = RIGHT(id_number, 1)result = sum([int(number[i]) * weight[i] for i in range(17)]) % 11if verify_code[result] == last_code:return Trueelse:return Falseid_number = 'X'if verify_id_number(id_number):print(f"{id_number} 是有效的身份证号码")else:print(f"{id_number} 不是有效的身份证号码")通过上述代码,我们可以利用RIGHT函数提取身份证号码的校验位,并使用加权和的计算公式进行校验。

身份证校验模板操作步骤

身份证校验模板操作步骤

身份证校验模板操作步骤电子版的明细清单填写完毕后要运用校验模板来校验。

校验模板能校验姓名填写是否有误、身份证号码是否有误、身份证号码是否重复。

有问题的人员明细或者信息不正确的,应即时核对并修改后重新校验一次,全部明细清单都正确后,再把参保单及明细清单电子版拷贝到U盘。

1、为便于操作,校验模板内部分列已作了隐藏,在使用过程中不要随意对身份证校验模板的格式做任何更改,也不要增加或者删除行、列,否则可能无法正常使用表格的功能。

2、模板样式3、操作步骤(1)、请用“Microsoft Excel”打开身份证校验模板,不要使用其他办公软件,例如“金山WPS”。

(2)、打开模板时,有可能会跳出一个提示框,出现这个框,说明校验模板没有启用宏,只要在表格顶端的工具栏设置那里把宏的安全性等级设置为低就可以正常使用校验模板的功能了。

具体操作步骤如下:第一步:双击打开校验模板如果出现此框,直接点击确定关闭该提示框;第二步:校验模板左上角点击“工具”菜单选项→然后选择“宏”→选择“安全性”→将安全等级设置为“低”,确定即可。

(3)把明细清单内的个人信息复制到校验模板内进行校验,需要复制内容只有姓名、身份证号码,其他不用复制。

1、分别打开明细清单和校验模板,把明细清单上的“姓名“栏下的内容和“身份证号码”栏下的内容分别复制(也可手动输入)到校验模板内的对应的内容栏下,其他内容不用复制,如果第一次复制粘贴不成功,请重试几次,直到成功为止(也可先用鼠标在校验模板内点一下姓名或者身份证一栏,出现黑色的框后,直接返回明细清单界面复制姓名或者身份证,然后在校验模板操作粘贴)。

可一次性全部复制,也可分次来操作;2、复制粘贴完毕后,校验模板会直接显示校验结果,请根据结果的提示,在明细清单原始记录里修改职工的个人信息并保存,在校验模板修改无效,举例如下:①在性别一栏下直接显示“未参加任何项目”的,为校验合格通过,无需修改;②在性别一栏下直接显示“身份证长度错误”的,说明该职工的身份证位数不足18位或者多于18位,或者身份证一栏空白没有录入,请核对职工信息后在明细清单原始记录内更正该职工的身份证号码(正确的身份证号码应为18位,或多或少都是不正确的);③在性别一栏下直接显示“已满55周岁(女)”及“未满18周岁”或者“已满60周岁(男)”的,说明该职工的年龄不符合参保要求,必须删除;④在性别一栏下直接显示“身份证重复”的,说明该职工的身份证号码在此份明细清单里出现了两次以上,请仔细核对,到底是同一个职工重复录入,还是不同职工的姓名使用了同一个身份证号码,核对后在明细清单原始记录内更正相对应的职工信息。

身份验证的几种方式

身份验证的几种方式

身份验证的几种方式
用户名密码认证:这是最基本的身份认证方式,指用户注册账号时设置用户名和密码,通过输入正确的账号和密码进行登录。

这种方式简单易行,但容易被人破解。

短信验证码认证:用户输入手机号码并验证成功后,系统会发送随机生成的验证码到用户手机,用户输入验证码后即可完成验证。

这种方式安全性较高,但需要用户拥有有效的手机号,并且需要使用额外的短信验证成本。

邮箱验证码认证:这种方式与短信验证码类似,只不过验证码是发送到用户的邮箱中。

相比短信验证码,要求更高,需要用户拥有有效的电子邮箱地址。

身份证认证:现在很多网站和APP要求实名认证,需要用户输入自己的身份证号码及其它相关信息。

这种方式安全性极高,但用户个人隐私被暴露,侵犯了用户隐私权。

生物特征认证:随着科学技术的进步,生物特征认证方式逐渐被广泛使用。

如指纹认证、面部识别、虹膜识别等,这些方式的安全性高,但前提是需要采集用户的生物特征数据。

身份证验证(正则表达式)

身份证验证(正则表达式)

1、号码的结构
公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。
2、地址码(前六位数)
表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按gb/T2260的规定执行。
3、出生日期码(第七位至十四位)

表示编码对象出生的年、月、日,按gb/T7408的规定执行,年、月、日代码之间不用分隔符。
4、顺序码(第十五位至十七位)
表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。
第二种方法:
function scCard(){ var scType=document.getElementById("sc_card_type").value; if(scType=="1"){ var scCard=document.getElementById("sc_card_num").value; if(scCard.length!=0){ if(!checkCard(scCard)){ $("#errorTips").html("身份证号码格式错误"); }else{ $("#errorTips").html(""); } } } return false; } //function checkidno(obj) { var vcity={ 11:"北京",12:"天津",13:"河北",14:"山西",15:"内蒙古", 21:"辽宁"

身份证数字校验码计算公式

身份证数字校验码计算公式

身份证数字校验码计算公式在中国,每个人的身份证号码都是唯一的,其中包括了个人的基本信息和校验码。

校验码是身份证号码中的最后一位数字,它是根据身份证号码的前17位数字计算而得到的。

校验码的存在可以帮助验证身份证号码的有效性,防止错误或伪造的身份证号码的使用。

那么,身份证数字校验码是如何计算的呢?首先,我们需要了解身份证号码的结构。

中国的身份证号码共有18位数字,其中前17位是个人的基本信息,包括地区、出生年月日和顺序码,最后一位是校验码。

校验码的计算是通过对前17位数字进行一系列的运算得到的。

校验码的计算公式如下:1. 将身份证号码的前17位数字分别乘以对应的加权因子,然后将乘积相加。

2. 将上一步得到的结果除以11,得到余数。

3. 根据余数在一个预先设定的对照表中找到对应的校验码。

下面我们来详细解释一下这个计算公式。

首先,加权因子是一个固定的数组,分别为,7、9、10、5、8、4、2、1、6、3、7、9、10、5、8、4、2。

这些数字分别对应身份证号码的前17位数字,用来进行加权计算。

接下来,我们将身份证号码的前17位数字分别乘以对应的加权因子,然后将乘积相加。

假设一个身份证号码的前17位数字分别为a1、a2、a3...a17,对应的加权因子分别为w1、w2、w3...w17,那么校验码的计算公式可以表示为:S = a1w1 + a2w2 + a3w3 + ... + a17w17。

其中S表示加权计算的结果。

然后,我们将S除以11,得到余数M。

余数M的取值范围为0到10。

最后,我们根据余数M在一个对照表中找到对应的校验码。

对照表如下:0,1。

1,0。

2,X。

3,9。

4,8。

5,7。

6,6。

7,5。

8,4。

9,3。

10,2。

根据上述对照表,我们可以找到对应余数M的校验码。

通过以上的计算公式,我们可以得到身份证号码的校验码。

这个计算过程可以帮助我们验证身份证号码的有效性,防止错误或伪造的身份证号码的使用。

身份证正确检验及验证公式

身份证正确检验及验证公式

验证公式一=IF(LEN(H20)=18,IF(RIGHT(H20,1)="X",IF(CHOOSE(MOD(SUM(LEFT(RIGHT(H20,18) )*7 LEFT(RIGHT(H20,17))*9 LEFT(RIGHT(H20,16))*10 LEFT(RIGHT(H20,15))*5 LEFT(RIGHT(H20,14))*8 LEFT(RIGHT(H20,13))*4 LEFT(RIGHT(H20,12))*2LEFT(RIGHT(H20,11))*1 LEFT(RIGHT(H20,10))*6 LEFT(RIGHT(H20,9))*3LEFT(RIGHT(H20,8))*7 LEFT(RIGHT(H20,7))*9 LEFT(RIGHT(H20,6))*10LEFT(RIGHT(H20,5))*5 LEFT(RIGHT(H20,4))*8 LEFT(RIGHT(H20,3))*4LEFT(RIGHT(H20,2))*2),11)1,1,0,"X",9,8,7,6,5,4,3,2)=LEFT(RIGHT(H20,1)),"正确!","出错啦!"),IF(CHOOSE(MOD(SUM(LEFT(RIGHT(H20,18))*7 LEFT(RIGHT(H20,17))*9LEFT(RIGHT(H20,16))*10 LEFT(RIGHT(H20,15))*5 LEFT(RIGHT(H20,14))*8 LEFT(RIGHT(H20,13))*4 LEFT(RIGHT(H20,12))*2 LEFT(RIGHT(H20,11))*1LEFT(RIGHT(H20,10))*6 LEFT(RIGHT(H20,9))*3 LEFT(RIGHT(H20,8))*7LEFT(RIGHT(H20,7))*9 LEFT(RIGHT(H20,6))*10 LEFT(RIGHT(H20,5))*5LEFT(RIGHT(H20,4))*8 LEFT(RIGHT(H20,3))*4 LEFT(RIGHT(H20,2))*2),11)1,1,0,"X",9,8,7,6,5,4,3,2)=LEFT(RIGHT(H20,1))*1,"正确!","出错啦!")),IF(LEN(H20)=15,"老号,请注意!",IF(LEN(H20)=0,"缺号码","位数不对!")))验证公式二=MID("10X98765432",MOD(SUMPRODUCT(MID(H20,ROW(INDIRECT("1:17")),1)*2^(18 -ROW(INDIRECT("1:17")))),11) 1,1)=RIGHT(H20,1)身份证有15位和18位两种,身份证位数是否正确,我们可以用LEN函数判断。

身份证正确检验及验证公式

身份证正确检验及验证公式

公式二出处
EXCEL提取身份证出生日期、性别、检验身份证号码正确性
中国居民身份证号码是一组特征组合码,原为15位,现升级为18位,其编码规则为:
15位:6位数字常住户口所在县市的行政区划代码,6位数字出生日期代码,3位数字顺序码。
18位:6位数字常住户口所在县市的行政区划代码,8位数字出生日期代码,3位数字顺序码和1位检验码。
假定身份证号码在B1单元格,下面的公式可以综合判断以上三种错误:
验证公式三
=IF(OR(LEN(B1)=18,LEN(B1)=15),IF(LEN(B1)=18,IF(OR(MONTH(DATE(1*(MID(B1,7,4)),1*(MID(B1,11,2)),1*(MID(B1,13,2))))<>1*(MID(B1,11,2)),DAY(DATE(1*(MID(B1,7,4)),1*(MID(B1,11,2)),1*(MID(B1,13,2))))<>1*(MID(B1,13,2))),"月日错误",""),IF(LEN(B1)=15,IF(OR(MONTH(DATE(1*(MID(B1,7,2))+1900,1*(MID(B1,9,2)),1*(MID(B1,11,2))))<>1*(MID(B1,9,2)),DAY(DATE(1*(MID(B1,7,2))+1900,1*(MID(B1,9,2)),1*(MID(B1,11,2))))<>1*(MID(B1,11,2))),"月日错误",""))),"身份证位数不对")&IF(AND(LEN(B1)=18,1*MID(B1,7,4)>YEAR(TODAY())-6),"年份错误","")

验证身份的方法

验证身份的方法

验证身份的方法
在现代社会中,身份验证已经成为了一种必要的手段。

无论是在日常生活中还是在工作中,我们都需要通过身份验证来证明自己的身份。

身份验证的目的是为了保护个人信息的安全,防止身份被盗用或者被冒用。

下面将介绍几种常见的身份验证方法。

1.密码验证
密码验证是最常见的身份验证方法之一。

我们在使用各种应用程序和网站时,都需要输入用户名和密码来验证身份。

密码应该是足够复杂的,以确保安全性。

同时,我们也需要定期更改密码,以防止密码被破解或者被盗用。

2.生物识别验证
生物识别验证是一种基于人体生物特征的身份验证方法。

这种方法可以通过扫描指纹、面部识别、虹膜扫描等方式来验证身份。

生物识别验证的优点是准确性高,不易被冒用。

但是,这种方法需要使用专门的设备,成本较高。

3.短信验证
短信验证是一种基于手机短信的身份验证方法。

在使用某些应用程序或者网站时,我们需要输入手机号码,然后会收到一条短信验证码。

我们需要输入验证码来验证身份。

这种方法的优点是简单易用,
但是安全性较低,容易被仿冒。

4.证件验证
证件验证是一种基于身份证、护照等证件的身份验证方法。

在某些场合,我们需要出示身份证或者护照来证明自己的身份。

这种方法的优点是准确性高,但是需要携带证件,不太方便。

身份验证是一种必要的手段,可以保护个人信息的安全。

我们需要根据不同的场合选择不同的身份验证方法,以确保安全性。

同时,我们也需要注意保护自己的密码和证件,避免被盗用或者丢失。

身份证号码验证(15位和18位且最后一位是X时不区分大小写)

身份证号码验证(15位和18位且最后一位是X时不区分大小写)
20.String[] ValCodeArr = {"1","0","x","9","8","7","6","5","4",
21."3","2"};
22.String[] Wi = {"7","9","10","5","8","4","2","1","6","3","7",
23."9","10","5","8","4","2"};
132.hashtable.put("41","河南");
133.hashtable.put("42","湖北");
134.hashtable.put("43","湖南");
135.34;广东");
136.hashtable.put("45","广西");
137.hashtable.put("46","海南");
1.importjava.text.ParseException;
2.importjava.text.SimpleDateFormat;
3.importjava.util.Calendar;
4.importjava.util.GregorianCalendar;

第二代居民身份证号码的校验码计算模型、步骤、公式

第二代居民身份证号码的校验码计算模型、步骤、公式

②将公式①的(2n ÷ 11取余) 普 去掉,只留2n 通 公 式 ③将公式①的LookUp函数 换成Mid函数
④将公式②的LookUp函数 换成Mid函数
⑤将公式①变为数组公式, =LEFT(D2,17)&LOOKUP(MOD(SUM(MID(D2,ROW(INDIRECT("1:17")),1)*MOD(2^(18ROW(INDIRECT("1:17"))),11)),11),{0;1;2;3;4;5;6;7;8;9;10},{1;0;"X";9;8;7;6;5;4;3;2}) 按Ctrl+Shift+Enter组合键 数 组 公 式 ⑥将公式②变为数组公式, =LEFT(D2,17)&LOOKUP(MOD(SUM(MID(D2,ROW(INDIRECT("1:17")),1)*2^(18ROW(INDIRECT("1:178;9;10},{1;0;"X";9;8;7;6;5;4;3;2}) 按Ctrl+Shift+Enter组合键 ⑦将公式③变为数组公式, =LEFT(D2,17)&MID("10X98765432",MOD(SUM(MID(D2,ROW(INDIRECT("1:17")),1)*MOD(2^(18ROW(INDIRECT("1:17"))),11)),11)+1,1) 按Ctrl+Shift+Enter组合键 ⑧将公式④变为数组公式, =LEFT(D2,17)&MID("10X98765432",MOD(SUM(MID(D2,ROW(INDIRECT("1:17")),1)*2^(18-ROW(INDIRECT("1:17")))),11)+1,1) 按Ctrl+Shift+Enter组合键

hkid 格式验证规则

hkid 格式验证规则

hkid 格式验证规则HKID(香港身份证)是香港特别行政区居民的身份标识证件。

它是香港居民在日常生活中的必备证件,用以证明自己的身份和完成各种行政手续。

HKID的格式验证规则是为了确保身份证件的真实性和有效性。

下面将详细介绍HKID的格式验证规则。

首先,HKID身份证号码由字母和数字组成,总共有8位。

其中,前面的英文字母可以是A至Z的任意一个大写字母,后面的7位是数字。

身份证号码的最后一位校验码是一个英文字母,用来验证整个身份证号码的准确性。

其次,HKID的首个字符可以是字母A至Z的任意一个大写字母,代表证件持有人的出生年代。

例如,A代表1900年代的出生年份,B 代表1910年代的出生年份,以此类推。

接下来,身份证号码的第二个字符可以是数字1至9中的任意一个,代表证件持有人的性别。

奇数代表男性,偶数代表女性。

第三和第四个字符是根据数字的大小来分配的。

它们一起组成一个号码范围,代表特定年份和性别的身份证号码。

例如,如果是1999年出生的男性,那么身份证号码的第三和第四个字符可以是01,代表该范围内的男性身份证号码。

第五到第七个字符是从01到999的数字,代表不同的居民市民序列号。

这个序列号是按照持证人在同一年出示香港身份证次数的顺序来分配的。

最后,第八个字符是一个校验码,用来验证前面所有字符的准确性。

它是根据身份证号码前7位的字母和数字进行计算得出的,并且符合一定的算法。

以上就是HKID身份证号码的格式验证规则。

这些规则是为了确保身份证件的准确性和有效性,以防止身份证号码被冒用或伪造。

同时,通过验证规则,可以方便身份证的使用者和相关机构对身份证进行识别和核实。

需要注意的是,HKID的格式验证规则可能会根据法律和政策的变化而发生一些变动。

因此,居民在使用或验证他人的HKID时,应及时了解最新的规则和要求,以确保操作的合法性和有效性。

Python身份证校验代码

Python身份证校验代码

Python⾝份证校验代码Python ⾝份证校验代码居民⾝份证bai编号识别 1、⾝份证编码规则如下:根据〖中华⼈民共和国国家标准GB11643-1999〗中有关公民⾝份号码的规定,公民⾝份号码是特征组合码,由⼗七位数字本体码和⼀位数字校验码组成。

排列顺序从左⾄右依次为:六位数字地址码,⼋位数字出⽣⽇期码,三位数字顺序码和⼀位数字校验码。

地址码(⾝份证前六位)表⽰编码对象第⼀次申领居民⾝份证时的常住户⼝所在县(市、旗、区)的⾏政区划代码。

(所有区域的编码可以到⽹站查询到最新的县及县以上的⾏政编码资料。

) ⽣⽇期码(⾝份证第七位到第⼗四位)表⽰编码对象出⽣的年、⽉、⽇,其中年份⽤四位数字表⽰,年、⽉、⽇之间不⽤分隔符。

例如:1981年05⽉11⽇就⽤19810511表⽰。

顺序码(⾝份证第⼗五位到⼗七位)是县、区级政府所辖派出所的分配码,每个派出所分配码为10个连续号码,例如“000-009”或“060-069”,其中单数为男性分配码,双数为⼥性分配码,如遇同年同⽉同⽇有两⼈以上时顺延第⼆、第三、第四、第五个分配码。

如:007的就是个男⽣,⽽且和他同年⽉⽇⽣的男⽣⾄少有两个,他们的后四位是001和003。

分配顺序码中“999、998、997、996”四个顺序号分别为男⼥性百岁以上⽼⼈专⽤的特定编号。

校验码(⾝份证最后⼀位)是根据前⾯⼗七位数字码,按照ISO7064:1983.MOD11-2校验码计算出来的检验码。

2、从1999年10⽉1⽇起,全国实⾏公民⾝份证号码制度,居民⾝份证编号由原15位升⾄18位。

前6位为地址码;第七位⾄14位为出⽣⽇期码,此码由6位数改为8位数,其中年份⽤4位数表⽰;第15位⾄17位为顺序码,取消了顺序码中对百岁⽼⼈使⽤的特定编号;第⼗⼋位为校验码,主要是为了校验计算机输⼊公民⾝份证号码的前17位数字是否正确,其取值范围是0⾄10,当值等于10时,⽤罗马数字符χ表⽰。

身份证校验码计算公式(含代码)

身份证校验码计算公式(含代码)

//生成‎身份证校验‎码/*‎// 逻辑‎1、为代‎码中的每一‎位数字规定‎序号;2‎、给每一位‎代码分配一‎个权数;权‎数的计算公‎式为 2^‎(i-1)‎mod ‎113、‎权数与对应‎的代码相乘‎;4、将‎所有的乘积‎相加;5‎、对和进行‎M OD(求‎余数)运算‎;Mod(‎S,11)‎若为身份‎证余数为1‎0则显示X‎,其他的则‎为0()‎6、对结果‎进行再处理‎得到校验码‎公式:‎A x=(∑‎(Ai×W‎i))(m‎o d 11‎)............‎...............‎ (1)‎i----‎表示号码字‎符从右至左‎包括校验码‎在内的位置‎序号;A‎i----‎表示第i位‎置上的数字‎号码;A‎x----‎数字校验码‎的值;W‎i----‎示第i位置‎上的加权因‎子;公式‎:Wi=(‎2^(i-‎1))(m‎o d 11‎)............‎...............‎ (2)‎i>1‎∑(Ai×‎W I)(m‎o d 11‎)0 1‎2 3 ‎4 5 6‎7 8 ‎9 10‎校验码字符‎值:1 ‎0 X 9‎8 7 ‎6 5 4‎3 2‎*/s‎t ring‎ls_r‎c,ls_‎c heck‎c ode‎l ong ‎i,Ai[‎],Ax,‎W i[]‎l ong ‎Jstr‎i ng l‎s_tem‎pstr‎i ng l‎s_che‎c kA[]‎ls_‎c heck‎A[]={‎'1','‎0','X‎','9'‎,'8',‎'7','‎6','5‎','4'‎,'3',‎'2'}‎as_c‎o de=t‎r im(a‎s_cod‎e)i‎=1Fo‎r J=1‎To l‎e n(as‎_code‎)i+‎+ls‎_temp‎=mid(‎a s_co‎d e,le‎n(as_‎c ode)‎- J ‎+1,1)‎Ai[‎i]=lo‎n g(ls‎_temp‎)Wi‎[i]=m‎o d(2 ‎^ (i ‎-1),1‎1)/‎/各个权‎数与对应的‎代码相乘之‎和Ax‎=Ax+A‎i[i]*‎W i[i]‎Ne‎x tA‎x=mod‎(Ax,1‎1)/*‎校验码字‎符值的确定‎:Y‎0 1 2‎3 4 ‎5 6 7‎8 9 ‎10校‎验码1‎0 X ‎9 8 7‎6 5 ‎4 3 2‎*/c‎h oose‎case‎Ax‎c ase ‎0l‎s_che‎c kcod‎e='1'‎cas‎e 1‎ls_c‎h eckc‎o de='‎0'c‎a se 2‎ls‎_chec‎k code‎='X' ‎case‎3‎l s_ch‎e ckco‎d e='9‎'ca‎s e 4‎ls_‎c heck‎c ode=‎'8' ‎c ase ‎5l‎s_che‎c kcod‎e='7'‎cas‎e 6‎ls_c‎h eckc‎o de='‎6'c‎a se 7‎ls‎_chec‎k code‎='5' ‎case‎8‎ls_c‎h eckc‎o de='‎4'c‎a se 9‎ls‎_chec‎k code‎='3' ‎case‎10‎ls_c‎h eckc‎o de='‎2' En‎d cho‎o se‎l s_rc‎=as_c‎o de+l‎s_che‎c kcod‎e Re‎t urn ‎l s_rc‎‎。

身份证正确检验及验证公式

身份证正确检验及验证公式

验证公式一=IF(LEN(H20)=18,IF(RIGHT(H20,1)="X",IF(CHOOSE(MOD(SUM(LEFT(RIGHT(H20,18) )*7 LEFT(RIGHT(H20,17))*9 LEFT(RIGHT(H20,16))*10 LEFT(RIGHT(H20,15))*5 LEFT(RIGHT(H20,14))*8 LEFT(RIGHT(H20,13))*4 LEFT(RIGHT(H20,12))*2LEFT(RIGHT(H20,11))*1 LEFT(RIGHT(H20,10))*6 LEFT(RIGHT(H20,9))*3LEFT(RIGHT(H20,8))*7 LEFT(RIGHT(H20,7))*9 LEFT(RIGHT(H20,6))*10LEFT(RIGHT(H20,5))*5 LEFT(RIGHT(H20,4))*8 LEFT(RIGHT(H20,3))*4LEFT(RIGHT(H20,2))*2),11)1,1,0,"X",9,8,7,6,5,4,3,2)=LEFT(RIGHT(H20,1)),"正确!","出错啦!"),IF(CHOOSE(MOD(SUM(LEFT(RIGHT(H20,18))*7 LEFT(RIGHT(H20,17))*9LEFT(RIGHT(H20,16))*10 LEFT(RIGHT(H20,15))*5 LEFT(RIGHT(H20,14))*8 LEFT(RIGHT(H20,13))*4 LEFT(RIGHT(H20,12))*2 LEFT(RIGHT(H20,11))*1LEFT(RIGHT(H20,10))*6 LEFT(RIGHT(H20,9))*3 LEFT(RIGHT(H20,8))*7LEFT(RIGHT(H20,7))*9 LEFT(RIGHT(H20,6))*10 LEFT(RIGHT(H20,5))*5LEFT(RIGHT(H20,4))*8 LEFT(RIGHT(H20,3))*4 LEFT(RIGHT(H20,2))*2),11)1,1,0,"X",9,8,7,6,5,4,3,2)=LEFT(RIGHT(H20,1))*1,"正确!","出错啦!")),IF(LEN(H20)=15,"老号,请注意!",IF(LEN(H20)=0,"缺号码","位数不对!")))验证公式二=MID("10X98765432",MOD(SUMPRODUCT(MID(H20,ROW(INDIRECT("1:17")),1)*2^(18 -ROW(INDIRECT("1:17")))),11) 1,1)=RIGHT(H20,1)身份证有15位和18位两种,身份证位数是否正确,我们可以用LEN函数判断。

java算法之身份证号码验证

java算法之身份证号码验证

java算法之⾝份证号码验证调⽤时直接new IDCard().verify(⾝份证id);就可以了实现代码如下:public class IDCard {private String _codeError;//wi =2(n-1)(mod 11)final int[] wi = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1};// verify digitfinal int[] vi = {1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2};private int[] ai = new int[18];private static String[] _areaCode={"11","12","13","14","15","21","22","23","31","32","33","34","35","36","37","41","42","43","44","45","46","50","51","52","53","54","61","62","63","64","65","71","81","82","91"};private static HashMap<String,Integer> dateMap;private static HashMap<String,String> areaCodeMap;static{dateMap=new HashMap<String,Integer>();dateMap.put("01",31);dateMap.put("02",null);dateMap.put("03",31);dateMap.put("04",30);dateMap.put("05",31);dateMap.put("06",30);dateMap.put("07",31);dateMap.put("08",31);dateMap.put("09",30);dateMap.put("10",31);dateMap.put("11",30);dateMap.put("12",31);areaCodeMap=new HashMap<String,String>();for(String code:_areaCode){areaCodeMap.put(code,null);}}//验证⾝份证位数,15位和18位⾝份证public boolean verifyLength(String code){int length=code.length();if(length==15 || length==18){return true;}else{_codeError="错误:输⼊的⾝份证号不是15位和18位的";return false;}}//判断地区码public boolean verifyAreaCode(String code){String areaCode=code.substring(0,2);// Element child= _areaCodeElement.getChild("_"+areaCode);if(areaCodeMap.containsKey(areaCode)){return true;}else{_codeError="错误:输⼊的⾝份证号的地区码(1-2位)["+areaCode+"]不符合中国⾏政区划分代码规定(GB/T2260-1999)";return false;}}//判断⽉份和⽇期public boolean verifyBirthdayCode(String code){//验证⽉份String month=code.substring(10,12);boolean isEighteenCode=(18==code.length());if(!dateMap.containsKey(month)){_codeError="错误:输⼊的⾝份证号"+(isEighteenCode?"(11-12位)":"(9-10位)")+"不存在["+month+"]⽉份,不符合要求(GB/T7408)";return false;}//验证⽇期String dayCode=code.substring(12,14);Integer day=dateMap.get(month);String yearCode=code.substring(6,10);Integer year=Integer.valueOf(yearCode);//⾮2⽉的情况if(day!=null){if(Integer.valueOf(dayCode)>day || Integer.valueOf(dayCode)<1){_codeError="错误:输⼊的⾝份证号"+(isEighteenCode?"(13-14位)":"(11-13位)")+"["+dayCode+"]号不符合⼩⽉1-30天⼤⽉1-31天的规定(GB/T7408)"; return false;}}//2⽉的情况else{//闰⽉的情况if((year%4==0&&year%100!=0)||(year%400==0)){if(Integer.valueOf(dayCode)>29 || Integer.valueOf(dayCode)<1){_codeError="错误:输⼊的⾝份证号"+(isEighteenCode?"(13-14位)":"(11-13位)")+"["+dayCode+"]号在"+year+"闰年的情况下未符合1-29号的规定(GB/T7408)"; return false;}}//⾮闰⽉的情况else{if (Integer.valueOf(dayCode) > 28 || Integer.valueOf(dayCode) < 1) {_codeError="错误:输⼊的⾝份证号"+(isEighteenCode?"(13-14位)":"(11-13位)")+"["+dayCode+"]号在"+year+"平年的情况下未符合1-28号的规定(GB/T7408)"; return false;}}}return true;}//验证⾝份除了最后位其他的是否包含字母public boolean containsAllNumber(String code) {String str="";if(code.length()==15){str=code.substring(0,15);}else if(code.length()==18){str=code.substring(0,17);}char[] ch = str.toCharArray();for (int i = 0; i < ch.length; i++) {if (! (ch[i] >= '0' && ch[i] <= '9')) {_codeError="错误:输⼊的⾝份证号第"+(i+1)+"位包含字母";return false;}}return true;}public String getCodeError(){return _codeError;}//验证⾝份证public boolean verify(String idcard) {_codeError="";//验证⾝份证位数,15位和18位⾝份证if(!verifyLength(idcard)){return false;}//验证⾝份除了最后位其他的是否包含字母if(!containsAllNumber(idcard)){return false;}//如果是15位的就转成18位的⾝份证String eifhteencard="";if (idcard.length() == 15) {eifhteencard = uptoeighteen(idcard);}else{eifhteencard=idcard;}//验证⾝份证的地区码if(!verifyAreaCode(eifhteencard)){return false;}//判断⽉份和⽇期if(!verifyBirthdayCode(eifhteencard)){return false;}//验证18位校验码,校验码采⽤ISO 7064:1983,MOD 11-2 校验码系统if(!verifyMOD(eifhteencard)){return false;}return true;}//验证18位校验码,校验码采⽤ISO 7064:1983,MOD 11-2 校验码系统public boolean verifyMOD(String code){String verify = code.substring(17, 18);if("x".equals(verify)){code=code.replaceAll("x","X");verify="X";}String verifyIndex=getVerify(code);if (verify.equals(verifyIndex)) {return true;}// int x=17;// if(code.length()==15){// x=14;// }_codeError="错误:输⼊的⾝份证号最末尾的数字验证码错误"; return false;}//获得校验位public String getVerify(String eightcardid) {int remaining = 0;if (eightcardid.length() == 18) {eightcardid = eightcardid.substring(0, 17);}if (eightcardid.length() == 17) {int sum = 0;for (int i = 0; i < 17; i++) {String k = eightcardid.substring(i, i + 1);ai[i] = Integer.parseInt(k);}for (int i = 0; i < 17; i++) {sum = sum + wi[i] * ai[i];}remaining = sum % 11;}return remaining == 2 ? "X" : String.valueOf(vi[remaining]);}//15位转18位⾝份证public String uptoeighteen(String fifteencardid) {String eightcardid = fifteencardid.substring(0, 6);eightcardid = eightcardid + "19";eightcardid = eightcardid + fifteencardid.substring(6, 15);eightcardid = eightcardid + getVerify(eightcardid);return eightcardid;}作者:jason0539。

一个完整的JS身份证校验代码

一个完整的JS身份证校验代码

⼀个完整的JS⾝份证校验代码⼀个完整的 JS ⾝份证校验代码⾝份证号码是由 18 位数字组成的,它们分别表⽰: (1) 前 1、2 位数字表⽰: 所在省份的代码; (2) 第 3、4 位数字表⽰: 所在城市的代码; (3) 第 5、6 位数字表⽰: 所在区县的代码; (4) 第 7~14 位数字表⽰: 出⽣年、⽉、⽇ (7、8、9、10 位是年,11、12 位是⽉,13、14 位是⽇); (5) 第 15、16 位数字表⽰: 所在地的派出所的代码; (6) 第 17 位数字表⽰性别: 奇数表⽰男性,偶数表⽰⼥性; (7) 第 18位数字是校检码: 校检码可以是 0~9 的数字,有时也⽤ x 表⽰。

/*** 校验⾝份证号合法性*/function checkIdNumberValid(tex){var tip = '输⼊的⾝份证号有误,请检查后重新输⼊!';var num = tex.value;num = num.toUpperCase();var len, re;len = num.length;if(len == 0) return true;//⾝份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后⼀位是校验位,可能为数字或字符X。

if (!(/(^\d{15}$)|(^\d{17}([0-9]|X)$)/.test(num))){alert(tip);tex.focus();return false;}//验证前两位地区是否有效var aCity= {11:"北京",12:"天津",13:"河北",14:"⼭西",15:"内蒙古",21:"辽宁",22:"吉林",23:"⿊龙江",31:"上海",32:"江苏",33:"浙江",34:"安徽",35:"福建",36:"江西",37:"⼭东",41:"河南",42:"湖北",43:"湖南",44:"⼴东",45:"⼴西",46:"海南",50:"重庆",51:"四川",52:"贵州",53:"云南",54:"西藏",61:"陕西",62:"⽢肃",63:"青海",64:"宁夏",65:"新疆",71:"台湾",81:"⾹港",82:"澳门",91:"国外"}if(aCity[parseInt(num.substr(0,2))] == null){alert(tip);tex.focus();return false;}//当⾝份证为15位时的验证出⽣⽇期。

正则表达式-身份证号码验证

正则表达式-身份证号码验证

正则表达式-⾝份证号码验证⾝份证号码验证,包含两代⾝份证,第⼀代和第⼆代⾝份证第⼀代⾝份证15位,其编码规则顺序从左⾄右依次为6位数字地址码,6位数字出⽣年份后两位及⽇期,3位数字顺序码。

格式:^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}$正则表达式分解如下:[1-9]\d{5}:前六位地区,⾮0开头\d{2} :出⽣年份后两位00-99((0[1-9])|(10|11|12)):⽉份,01-12⽉(([0-2][1-9])|10|20|30|31):⽇期,01-31天\d{3}:顺序码三位,没有校验码第⼆代⾝份证18位,其编码规则顺序从左⾄右依次为6位数字地址码,8位数字出⽣年份⽇期码,3位数字顺序码,1位数字校验码(X有时会出现):格式: ^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$正则表达式分解如下:[1-9]\d{5} :前六位地区,⾮0开头(18|19|([23]\d))\d{2}:出⾝年份,覆盖范围为 1800-3999 年((0[1-9])|(10|11|12)):⽉份,01-12⽉(([0-2][1-9])|10|20|30|31):⽇期,01-31天\d{3}[0-9Xx]:顺序码三位 + ⼀位校验码程序:private void BtnOK_Click(object sender, RoutedEventArgs e){if (string.IsNullOrEmpty(tbxName.Text)){MessageBox.Show($"姓名不可为空,请重新输⼊!");tbxName.Focus();return;}Name = tbxName.Text;Regex re = new Regex(@"(^[1-9]\d{5}\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}$)|(^[1-9]\d{5}(18|19|([23]\d))\d{2}((0[1-9])|(10|11|12))(([0-2][1-9])|10|20|30|31)\d{3}[0-9Xx]$)");if (re.IsMatch(tbxIDNumber.Text)){IDNumber = tbxIDNumber.Text;MessageBox.Show($"姓名:{Name},⾝份证号码:{IDNumber},符合规则");Close();}else{MessageBox.Show($"⾝份证号码格式不正确,请输⼊15或者18位的⾝份证号码。

身份证号码验证课程设计

身份证号码验证课程设计

目录1 绪论 (1)1.1课题内容与要求 (1)1.2需求分析 (1)1.3操作环境 (1)2 功能实现设计 (2)2.1总体设计 (2)2.1.1程序设计组成框图 (2)2.1.2数据流图 (2)2.2详细设计 (3)2.2.1存放信息设计 (4)2.2.2构造函数设计 (4)2.2.3判断信息是否正确 (9)2.2.4新旧身份证号转换 (13)2.2.5窗口类的创建及实现 (13)3 运行结果 (14)4 总结 (16)参考文献 (17)附录 (18)1 绪论1.1 课题内容与要求课题内容身份证第18位(校验码)的计算方法:(1)将前面的身份证号码17位分别乘以不同的系数:从第一位到第十七位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2;(2)将这17位数字和系数相乘的结果相加;(3)用加出来和除以11,得余数;(4)余数0-1-2-3-4-5-6-7-8-9-10对应的最后一位身份证号码为1-0-X-9-8-7-6-5-4-3-2;身份证号码的第七位到十四位为出生年月日,应符合现实;课题要求(1)使用java语言完成本课题的程序设计,并具有一定的深度和难度;(2)结构化程序设计,源程序要有适当的注释,使程序容易阅读;(3)能先对问题进行分析然后进行设计最后进行编码的原则。

每一步都要有文档产生;(4)程序一定要做必要的测试和分析,必须得到合理结果;(5)可适当添加功能,让程序更具有实用性。

(6)提交的所有材料必须符合《长沙理工大学课程设计管理规定》(长理工大[2005]8号)的要求。

1.2 需求分析本课题主要目的是为了设计一套程序来验证给出的身份证号是否正确,如若正确将身份证号所体现的关键信息性别,年龄,出生日期展现给用户,同时考虑到实实际情况给出了十五位身份证号转十八位,以及十八位转十五位的算法,从而给相关部门机构带来方便。

1.3 操作环境MyEclipse 8.52 功能实现设计2.1 总体设计根据上面的分析,将系统分为几大部分:判断身份证号的位数以及每一位是否正确,判断出生年月是否符合实际,根据算法运算对比校验码是否正确,新旧身份证号转换,提取输出关键信息。

18位身份证号码校验位规则

18位身份证号码校验位规则

18位⾝份证号码校验位规则根据〖中华⼈民共和国国家标准 GB 11643-1999〗中有关公民⾝份号码的规定,公民⾝份号码是特征组合码,由⼗七位数字本体码和⼀位数字校验码组成。

排列顺序从左⾄右依次为:六位数字地址码,⼋位数字出⽣⽇期码,三位数字顺序码和⼀位数字校验码。

地址码表⽰编码对象常住户⼝所在县(市、旗、区)的⾏政区划代码。

⽣⽇期码表⽰编码对象出⽣的年、⽉、⽇,其中年份⽤四位数字表⽰,年、⽉、⽇之间不⽤分隔符。

顺序码表⽰同⼀地址码所标识的区域范围内,对同年、⽉、⽇出⽣的⼈员编定的顺序号。

顺序码的奇数分给男性,偶数分给⼥性。

校验码是根据前⾯⼗七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。

下⾯举例说明该计算⽅法。

15位的⾝份证编码⾸先把出⽣年扩展为4位,简单的就是增加⼀个19,但是这对于1900年出⽣的⼈不使⽤(这样的寿星不多了)某男性公民⾝份号码本体码为34052419800101001,⾸先按照公式⑴计算:∑(ai×Wi)(mod 11) (1)公式(1)中:i----表⽰号码字符从右⾄左包括校验码在内的位置序号;ai----表⽰第i位置上的号码字符值;Wi----⽰第i位置上的加权因⼦,其数值依据公式Wi=2(n-1)(mod 11)计算得出。

i 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1ai 3 4 0 5 2 4 1 9 8 0 0 1 0 1 0 0 1 a1Wi 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 1ai×Wi 21 36 0 25 16 16 2 9 48 0 0 9 0 5 0 0 2 a1根据公式(1)进⾏计算:∑(ai×Wi) =(21+36+0+25+16+16+2+9+48++0+0+9+0+5+0+0+2) = 189189 ÷ 11 = 17 + 2/11∑(ai×Wi)(mod 11) = 2然后根据计算的结果,从下⾯的表中查出相应的校验码,其中X表⽰计算结果为10:∑(ai×WI)(mod 11) 0 1 2 3 4 5 6 7 8 9 10校验码字符值ai 1 0 X 9 8 7 6 5 4 3 2根据上表,查出计算结果为2的校验码为所以该⼈员的公民⾝份号码应该为 340524************。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
姓名 此处输入身份证号码
显示校验结果 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码
缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码
缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码
缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码
缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码
缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码
缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码
缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码
缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码
缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码
缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码
缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码
缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码
缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码
缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码
缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码
缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码
缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码
缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码
缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码
缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码 缺号码
相关文档
最新文档