搜档网
当前位置:搜档网 › 身份证号码验证(15位和18位且最后一位是X时不区分大小写)

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

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

公民身份证号码18位数字含义

公民身份证号码18位数字含义2010.07 目前我国公民身份证号码由18位数字组成:前6位为地址码,第7至14位为出生日期码,第15至17位为顺序码,第18位为校验码。检验码分别是“0、1、2、……10”共11个数字,当检验码为“10”时,为了保证公民身份证号码18位,所以用“X”表示。虽然校验码为“X”不能更换,但若需全用数字表示,只需将18位公民身份号码转换成15位居民身份证号码,去掉第7至8位和最后1位3个数码。 当今的身份证号码有15位和18位之分。1985年我国实行居民身份证制度,当时签发的身份证号码是15位的,1999年签发的身份证由于年份的扩展(由两位变为四位)和末尾加了效验码,就成了18位。这两种身份证号码将在相当长的一段时期内共存。两种身份证号码的含义如下: 18位的身份证号码如:130429####%%%%0078 1~6位为地区代码,其中1、2位数为各省级政府的代码,3、4位数为地、市级政府的代码,5、6位数为县、区级政府代码。如13(河北省)04(邯郸市)29(永年县) 7~14位为出生年月日 15~17位为顺序号,是县、区级政府所辖派出所的分配码,每个派出所分配码为10个连续号码,例如“000-009”或“060-069”,其中单数为男性分配码,双数为女性分配码,如遇同年同月同日有两人以上时顺延第二、第三、第四、第五个分配码。如:007的就是个男生而且和他同年月日生的男生至少有两个他们的后四位是001* 和003* 18位为效验位(识别码),通过复杂公式算出,普遍采用计算机自动生成。是前面17位的一种检验代码,如果你改变了前面某个数字而后面的效验代码不响应改变就会被计算软件判断为非法身份正号码。X也是效验代码的一中 15位的身份证号码: (1)1~6位为地区代码 (2)7~8位为出生年份(2位),9~10位为出生月份,11~12位为出生日期 (3)第13~15位为顺序号,并能够判断性别,奇数为男,偶数为女。 《中华人民共和国行政区划代码》 (GB/T2260-1995)

Excel中如何将15位身份证号转换为18位

Excel中如何将15位身份证号转换为18位 假设A列自A2起是身份证号(15位或18位)。 1、身份证号全部改为18位,输入数组公式: =IF(LEN(A2)=15,REPLACE(A2,7,,19)&MID("10X98765432",MOD(SUM(MID(REPLAC E(A2,7,,19),ROW(INDIRECT("1:17")),1)*2^(18-ROW(INDIRECT("1:17")))),11 )+1,1),A2) 注意:数组公式输入方法:输入公式后不要按回车,而是按Ctrl+Shift+Enter。 2、身份证号全部改为15位,输入公式: =IF(LEN(A2)=15,A2,LEFT(REPLACE(A2,7,2,),15)) 3、计算出生日期: =IF(A2<>"",TEXT((LEN(A2)=15)*19&MID(A2,7,6+(LEN(A2)=18)*2),"#-00-00") +0,) 4、判断性别: =IF(A2<>"",IF(MOD(RIGHT(LEFT(A2,17)),2),"男","女"),) 最终结果如图: 自己做的: 1、根据身份证号码求出生年月: =IF(LEN(A1)=15,MID(A1,7,2)&"-"&MID(A1,9,2)&"-"&MID(A1,11,2),MID(A1,7,4)&"-"&MID(A1,11,2 )&"-"&MID(A1,13,2)) 或:

=IF(LEN(A1)=15,CONCATENATE("19",MID(A1,7,2),".",MID(A1,9,2)),IF(LEN(A1)=18,CONCATENATE( MID(A1,7,4),".",MID(A1,11,2)),"身份证错")) 2、根据身份证号码求性别: =IF(LEN(B2)=15,IF(MOD((MID(B2,15,1)),2)=1,"男","女"),IF(LEN(B2)=18,IF(MOD((MID(B2,17,1)),2)=1,"男","女"),"身份证错")) 3、根据身份证号码求年龄: =IF(LEN(B2)=15,year(now())-1900-(MID(B2,7,2)),if(LEN(B2)=18, year(now())-(MID(B2,7,4)),"身份证错"))

Excel判断身份证号校验码

Excel判断身份证号校验码 假设在一个工作表中:A列是姓名,B列是身份证号码,C列是备注。在B列中输入18位身份证号码后,在C2单元格中输入计算数组公式: =RIGHT(B2,1)=MID("10X98765432",MOD(SUM(MID(B2,ROW(INDIRECT("1:17")),1)*2^(18-ROW(INDIRECT("1:17")))),11)+1,1) 然后再将该公式复制给C列其他单元格。 公式的计算结果是一个逻辑值,True表示校验正确,即计算出来的校验码与输入的相同,而False则表示校验错误。值得注意的是,使用校验码进行校验判断为正确的身份证号码未必是正确的,但判断为错误的则肯定是错误的,即通过校验的只是身份证号码正确的必要条件而非充分条件。当然,在实际输入中,身份证号码输入错误而校验正确的情况很少见。在大多数情况下,使用校验码进行校验可以大大提高身份证号码输入的正确性。 RIGHT 根据所指定的字符数返回文本字符串中最后一个或多个字符。 MID 返回文本字符串中从指定位置开始的特定数目的字符,该数目由用户指定。 MOD 返回两数相除的余数。SUM 返回某一单元格区域中所有数字之和。ROW 返回引用的行号。INDIRECT 返回由文本字符串指定的引用。 或者输入数组公式: =IF(LEN(B2)<>18,"错误 ",IF(MID("10X98765432",MOD(SUM(MID(B2,ROW(INDIRECT("1:17")),1)*2^(18-ROW(INDIRECT("1:17")))),11)+1,1)=MID(B2,18,1), "正确","错误"))

题目身份证号码15位到18位转换

题目:身份证号码15位到18位转换 一、语言和环境 A 、 实现语言 Java B 、 环境要求 JDK1.4以上版本及其联机帮助文档 二、要求 本软件是某社会保障信息管理系统的子模块,工作人员从网页上调用,可以根据参保人的15位身份证号码,计算出18位身份证号,同时显示该参保人的出生日期和性别。 程序的功能要求如下: 1:设计一个有图形用户界面的Applet ,将Applet 背景色设为浅灰色,接受用户输入15位身份证号码; 2:判断输入身份证号位数是否正确,判断输入是否有效(如输入非数字字符),否则提示用户重新输入; 3:计算18位身份证号码; 4:根据身份证号的第7-14位(YYYYMMDD )。显示出生日期; 5:根据身份证号的第17位(奇数位男性,偶数位女性),显示性别; 6:生成一个用于显示Applet 的html 文件。 限制条件: 只考虑20世纪(即1900-1999)出生的参保人; 不考虑出生日期是否有效。 三、算法说明 身份证号15位到18位转换算法: 1:在6位行政区划后插入2位世纪代码(如19),构成四位出生年份,得到17位号码; 2:把17位号码从高位到低位与下列17个数字分别相乘求和(N ): 「2,4,8,5,10,9,7,3,6,1,2,4,8,5,10,9,7」 比如身份证号码为:1716321C C C C C ?? 则74211617?+??+?+?=C C C N ; 3:将N 除以11取余数R ,根据余数计算尾数T ; 1) 如果R =0,则T =1;如果R=1,则T=0;如果R=2,则T=X; 2) 如果R=3,则T=9;如果R=4,则T=8;依此类推……;如果R=10,则T=2; 4:将尾数T 添加到17位号码后即得到18位号码。 四、推荐实现步骤 1、 设计用户界面 Applet 用户界面组件包括: A 、 一个用于显示标题“身份证号码15位到18位转换”的标签; B 、 四个提示标签,分别显示“15位身份证号”,“18位身份证号”,“出生日期”, “性别”; C 、 一个用于输入15位身份证号的文本框; D 、 三个显示计算结果的标签,分别显示18位身份证号、出生日期和性别;

18位身份证号编制规则

18位身份证号编制规则 一、身份证号码执行标准:18位身份证标准在国家质量技术监督局于1999年7月1日实施的GB11643-1999《公民身份号码》。 GB11643-1999《公民身份号码》为GB11643-1989《社会保障号码》的修订版,其中指出将原标准名称“社会保障号码”更名为“公民身份号码”,另外GB11643-1999《公民身份号码》从实施之日起代替GB11643-1989。 二、编码规则:公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码,可以用字母表示如为ABCDEFYYYYMMDDXXXR。其含义如下: 1. 地址码(ABCDEF):表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按GB/T22 60的规定执行。 2. 出生日期码(YYYYMMDD):表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日分别用4位、2位(不足两位加0)、2(同上)位数字表示,之间不用分隔符。 3. 顺序码(XXX):表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。 4.校验码(R),一位数字,通过前17位数字根据一定计算得出。 三、关于地址码含义的详细解释: 身份证前六位是地区代码,我们用ABCDEF表示。代码的解释规则如下: A:国内区域 1 华北三省二市 2 东北三省 3 华东六省一市

4 华南六省 5 西南四省一市 6 西北五省 7 台湾 8 港澳 B(或者说是AB,就是前2位):省(直辖市,自治区,特别行政区)代码 按照A划定的分区定义省代码,有直辖市的,直辖市列前,其余按离直辖市的距离排序,没有直辖市的,按离北京的远近排序。 具体省(直辖市,自治区,特别行政区)代码如下: 11-15 京津冀晋蒙 21-23 辽吉黑 31-37 沪苏浙皖闽赣鲁 41-46 豫鄂湘粤桂琼 50-54 渝川贵云藏 61-65 陕甘青宁新 81-82 港澳 CD:城市代码 从01开始排,对于直辖市,CD=01表示市辖区,CD=02表示辖县;省的城市代码从省会开始排,比如2101=沈阳2102=大连…… 只有地级城市有独立的城市代码,县级市没有。 EF:市辖区、郊区、郊县、县级市代码

15位数身份证升级方法

第一步: 身份证号码数据挪到A列,插入一列空白列B列,B1输入=LEN(A1)后向下拉。筛选出15位的老身份证 重新做个表 第二步: 身份证号码数据挪到A列,插入一列空白列B列,B1输入公式 =IF(LEN(A1)=15,CONCATENATE(MID(A1,1,6),"19",MID(A1,7,9),MID("10X98765432",MO D(MID(A1,1,1)*7+MID(A1,2,1)*9+MID(A1,3,1)*10+MID(A1,4,1)*5+MID(A1,5,1)*8+MID(A1 ,6,1)*4+1*2+9*1+MID(A1,7,1)*6+MID(A1,8,1)*3+MID(A1,9,1)*7+MID(A1,10,1)*9+MID(A1, 11,1)*10+MID(A1,12,1)*5+MID(A1,13,1)*8+MID(A1,14,1)*4+MID(A1,15,1)*2,11)+1,1)),A1) 这样15位身份证号码就变成了18位。 这个表保存好设为:表一(后面VLOOKUP函数用的上) 第三步:将做好的身份信息进行批量联网核查。 第四步:批量联网核查正确的即可做远程授权核实: 有两个方法:一、在60465里面直接输入15位身份证号,18位数的减成15位的大家肯定都会输二、如果想在60465里面输客户号,可用VOOKLUP函数在第二步“表一”里面将客户号对应。VLOOKUP函数用法不好描述请百度 (提示:在验证公式正确性时,很多身份证号通过这个公式错了,有可能是倒第二位数字本来网点原来就录错了与公式无关。) 参考资料: 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码 B2=RIGHT(A2,1) 例如身份证号在A2单元,在B2单元格用上述函数可以取出身份号尾数的X,然后向下拖就可以取出所有的尾数X。 C2=CODE(B2),可以在C列取出大X和小X的不同值,然后就可以将小X和大X区分开。

DB2 15位身份证号转18位函数

SET CURRENT SCHEMA = DB2INST1; CREATE OR REPLACE FUNCTION BDATA.F_N_SFZ (OLD_NO VARCHAR (18)) RETURNS VARCHAR (18) LANGUAGE SQL BEGIN ATOMIC /*定义变量部分*/ DECLARE v_sfz VARCHAR (20);---转换后身份证号 DECLARE v_no VARCHAR (15);---传入15位身份证号 declare i integer default 1;---递增变量 declare v_res integer default 0;---逻辑处理变量 DECLARE V_jym CHARACTER(1);---校验码 /*逻辑处理部分*/ /*1、6位日期转换为8位日期*/ SET v_no = OLD_NO; SET v_sfz = substr (v_no, 1, 6)||'19'||substr (v_no, 7, 9); /*2、将前面的身份证号码17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。*/ while i<18 do set v_res =v_res + (substr(v_sfz,i,1)*decode(i,1,7,2,9,3,10,4,5,5,8,6,4,7,2,8,1,9,6,10,3,11,7,12,9,13,10,14,5,15,8,16,4 ,17,2)); set i =i + 1; end while; CALL dbms_output.put_line (i||','||v_res); /*3、相加的和除以11,取余数,余数只可能有0-1-2-3-4-5-6-7-8-9-10这11个数字。其分别对应的最后一位身份证的号码为1-0-X -9-8-7-6-5-4-3-2。*/ setv_res=MOD(v_res,11); set V_jym = decode(v_res,0,'1',1,'0',2,'X',3,'9',4,'8',5,'7',6,'6',7,'5',8,'4',9,'3',10,'2'); setv_sfz = CONCAT(v_sfz,V_jym); /*返回结果部分*/ RETURN v_sfz; END;

浅谈如何将身份证号码15位转为18位

浅谈如何将身份证号码15位转为18位 笔者日前参与城乡居民保险制度全覆盖审计调查,在审查参保人员是否存在重复参加城乡居保及职工养老险种情况时,发现城乡居保参保人信息中身份证号码均为18位,而职工养老参保人信息中身份证号码长度不唯一,导致无法正确比对数据。 18位身份证号码除了据原有15位基础上,在出生年月部分添加“19”外,号码最后添加一位验证码。公安局公布的验证码算法内容概述为:将添加“19”后的17位身份证号码对应乘上系数并求和,再将系数和除11后求余数,根据余数对应选择验证码。笔者据此编写出一套语句,内容如下: 一、筛选出15位身份证号码后生成一张新表,将其转为17位 1.select 公民身份号码 into 身份证号码 from dbo.个人基本信息 where len(公民身份号码)=15 2. alter table 身份证号码 add 公民身份号码17位varchar(20)

3.update 身份证号码 set 公民身份号码17位 =substring(公民身份号码,1,6)+'19'+RIGHT(公民身份号码,7) 二、添加系数和、余数及验证码三列 Alter table 身份证号码 add系数和 int Alter table 身份证号码 add余数 int Alter table 身份证号码 add验证码 varchar(2) 三、求系数和 update dbo.身份证号码 set 系数和 =cast(left(公民身份号码17位,1) as int)*7+cast(substring(公民身份号码17位,2,1) as int)*9+cast(substring(公民身份号码17位,3,1) as int)*10+cast(substring(公民身份号码17 位,4,1)as int)*5+cast(substring(公民身份号码17 位,5,1)as int)*8+cast(substring(公民身份号码17 位,6,1)as int)*4+cast(substring(公民身份号码17位,7,1) as int)*2+cast(substring(公民身份号码17位,8,1)as int)*1+cast(substring(公民身份号码17位,9,1)as

身份证号码校验

Visual C++范例开发大全目录Mylaf 2012-10-23 第1篇VC++入门与基本文档视图 第1章Visual C++ 6.0 MFC程序设计快速入门 2 1.1 Visual C++ 6.0开发环境简介2 1.2 创建Visual C++ 6.0应用程序3 实例001 创建第一个MFC应用程序 3 实例002 创建第一个C++应用程序 4 第2章文档视图应用程序实例6 2.1 窗体操作6 实例003 实现启动时无子窗口的MDI程序 6 实例004 实现MDI应用程序启动时子窗口默认最大化7 实例005 MDI应用程序启动时主窗口默认最大化8 实例006 具有图片背景的MDI主窗口9 实例007 全屏显示的窗体12 实例008 创建带滚动条的窗体15 实例009 窗体拆分16 实例010 始终置顶的SDI程序17 实例011 不可移动的窗体18 实例012 创建不可改变大小的SDI窗口19 实例013 动态设置窗口位置和大小20 实例014 保存窗口状态21 实例015 双击主窗口弹出“打开”对话框23 2.2 标题栏25 实例016 获取标题栏高度25 实例017 获取标题栏上按钮的尺寸26 实例018 定制标题栏文字27 实例019 添加标题栏右键菜单项28 实例020 屏蔽标题栏右键系统菜单及隐藏按钮29 实例021 禁用标题栏上的最大化、最小化和关闭按钮30 实例022 显示和隐藏标题栏31 2.3 菜单32 实例023 获取菜单栏高度32 实例024 启用和禁用菜单33 实例025 动态添加菜单35 实例026 带单选标记的菜单36 实例027 复选标记的菜单38 实例028 带图标菜单的SDI程序39 实例029 带图标菜单的MDI 40 实例030 位图菜单41 实例031 创建客户区右键菜单43 实例032 隐藏和显示菜单栏44 实例033 为应用程序添加多语言支持45 2.4 工具栏48 实例034 工具栏按钮的添加、删除和分组48 实例035 不能停靠的工具栏48 实例036 下压式工具栏按钮49 实例037 给工具栏添加图像背景50 实例038 动态隐藏和显示工具栏51 2.5 状态栏52 实例039 显示和隐藏状态栏52 实例040 带进度条的状态栏53 实例041 在状态栏上加载图像54 实例042 滚动字幕的状态栏56 第3章对话框应用实例58 3.1 对话框界面58 实例043 设置对话框应用程序窗口启动位置58 实例044 半透明对话框59 实例045 创建不规则对话框应用程序60 实例046 拖动没有标题栏的对话框61 实例047 实现收缩对话框应用程序62 实例048 基于对话框的托盘程序64 实例049 为对话框应用程序添加菜单栏66 实例050 带有工具栏的对话框应用程序67 实例051 为对话框应用程序添加右键菜单68 实例052 模式对话框与非模式对话框69 实例053 属性页对话框71 实例054 向导式对话框72 实例055 为对话框应用程序添加启动界面73 实例056 为对话框应用程序添加百叶窗的启动界面76 3.2 通用对话框77 实例057 文件打开对话框78 实例058 在程序启动时弹出文件打开对话框79 实例059 在文件打开对话框中预览图片80 实例060 文件保存对话框81 实例061 选择文件夹对话框82 实例062 字体对话框84 实例063 颜色对话框86 实例064 查找与替换对话框87 第4章控件应用实例89 4.1 常见控件89 实例065 图文按钮89 实例066 具有随机图片背景的EditBox控件90 实例067 使用List Box显示系统逻辑磁盘驱动器列表92 实例068 利用列标题对列表视图进行数据排序93 实例069 使用Static Text控件显示当前系统时间95 实例070 使用Data Time Picker控件调整系统时间96 实例071 使用Combo Box控件控制字体大小97 实例072 使用Rich Edit控件显示文本文件98 实例073 使用Tree Control控件显示文件目录100 实例074 位图进度条102 实例075 使用Progress控件实现文字进度条103 实例076 使用Static Text控件显示当前时间104 实例077 使用Picture Box显示动态打开图像106 实例078 使用Group Box控件对控件分组107 实例079 使用Check Box实现多选109 实例080 使用Radio Button实现单选110 实例081 HorizontalScrollBar,VerticalScrollBar滚动条111

18位身份证号码转换成出生日期的函数公式

18位身份证号码转换成出生日期的函数公式:如果E2中是身份证,在F2中求出出生日期, F2=DATE(MIDB(E2,7,4),MIDB(E2,11,2),MIDB(E2,13,2)) 自动录入男女: =IF(MOD((IF(LEN(e2)=18,MID(e2,17,1),MID(e2,15,1))) ,2)= 0,"女","男") 根据身份证号快速录入男女性别“记住” 15/18位都可以的公式:转换出生日期: =IF(LEN(e2)=18,TEXT(MID(e2,7,8),"#-00-00"),"19"&TE XT(MID(e2,7,6),"#-00-00")) 自动录入男女: =IF(E2="","",IF(MOD(RIGHT(LEFT(E2,17),1),2)=0,"女","男")) 计算年龄(新旧身份证号都可以): =IF(AND(E2=""),"",IF(MIDB(E2,7,2)="19",107-MIDB(E2 ,9,2 ),107-MIDB(E2,7,2))) WPS表格提取身份证详细信息 前些天领导要求统计所有员工的性别、出生日期、年龄等信息,并且要得很急。而我们单位员工人数众多。

短时间内统计相关信息并且输入计算机几乎是不太可能的。幸好在以前的一份金山表格中我们曾经统计有所有员工的身份证号码,而身份证中正有我们所需要的性别、出生日期、年龄等信息的。所以。 干脆,还是直接在金山表格中从身份证号码提取相关的信息吧。 身份证号放在A2单元格以下的青岛DNA检测单位区域。我们需要从身份证号码中提取性别、出生日期、年龄等相关信息。由于现在使用的身份证有15位和18位两种。所以,在提取相关信息时。 首先应该判断身份证号码的数字个数,然后再区别不同情况进行相关处理。 一、身份证号的位数判断 在B2单元格输入如下公式“=LEN($A2)”。 回车后即可得到A2单元格身份证号码的数字位数。 如图1所示。LEN($A2)公式的含义是求出A2单元格字符串中字符的个数。由于当初身份证输入时就是以文本形式输入的。 所以用此函数正可以很方便地求到身份证号码的位数。

15位身份证升级为18位 并查询其信息

--15位身份证升级为18位并查询其信息 create or replace procedure f_changecard(p_cert_num in varchar2) as v_cert_num varchar2(30); v_type varchar2(20); v_sum varchar2(10); --v_sum_m varchar2(10); v_yu varchar2(4); v_new varchar(30); v_nian varchar(4); v_yue varchar(4); v_ri varchar(4); v_sex varchar2(2); v_sf varchar2(10); v_sf_f varchar2(4); --v_yu_y varchar2(4); begin execute immediate'select length(:p_cert_num) from dual' into v_type using p_cert_num; execute immediate'select (select substr((select :p_cert_num from dual),1,6) from dual )||19||(select substr((select :p_cert_num from dual),7,9) from dual) from dual' into v_cert_num using p_cert_num,p_cert_num; --判断身份证是否为15位 if v_type<>15then dbms_output.put_line('请输入证件号为15位的身份证信息'); else --校验取余 v_sum:=substr(v_cert_num,1,1)*7+ substr(v_cert_num,2,1)*9+ substr(v_cert_num,3,1)*10+ substr(v_cert_num,4,1)*5+ substr(v_cert_num,5,1)*8+ substr(v_cert_num,6,1)*4+ substr(v_cert_num,7,1)*2+ substr(v_cert_num,8,1)*1+ substr(v_cert_num,9,1)*6+ substr(v_cert_num,10,1)*3+ substr(v_cert_num,11,1)*7+ substr(v_cert_num,12,1)*9+ substr(v_cert_num,13,1)*10+

身份证号码15位升18位

身份证号码15位升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 1 ai 3 4 0 5 2 4 1 9 8 0 0 1 0 1 0 0 1 a1 Wi 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 1 ai×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) = 189 189 ÷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************。

身份证号码验证规则

身份证号码验证规则 说明:该规则为平台通用规则,适用于所有填身份证号码的场景。 一、概述 身份证号码中的校验码是身份证号码的最后一位,是根据GB 11643-1999中有关公民身份号码的规定,根据精密的计算公式计算出来的,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码,最后一位是数字校验码。 身份证最后一位是根据前面十七位数字码,按照ISO 7064:1983.MOD 11-2校验码计算出来的检验码。作为尾号的校验码,是由号码编制单位按统一的公式计算出来的,如果某人的尾号是0-9,都不会出现X,但如果尾号是10,那么就得用X来代替,因为如果用10做尾号,那么此人的身份证就变成了19位,而19位的号码违反了国家标准,并且我国的计算机应用系统也不承认19位的身份证号码。Ⅹ是罗马数字的10,用X来代替10,可以保证公民的身份证符合国家标准。 二、需求 产品身份证号码输入框内限制输入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这11个数字。其分别对应的最后一位身份证的号码为1 0 X 9 8 7 6 5 4 3 2; 5、通过上面得知如果余数是2,就会在身份证的第18位数字上出现罗马数字的X。如果余数是10,身份证的最后一位号码就是2; 例如:某男性的身份证号码是340524************。我们要看看这个身份证是不是合法的身份证。 首先:我们计算3*7+4*9+0*10+5*5+...+1*2,前17位的乘积和是189 然后:用189除以11得出的结果是商17余2 最后:通过对应规则就可以知道余数2对应的数字是x。所以,这是一个合格的身份证号码。

身份证号码是由18位数字组成的

身份证号码是由18位数字组成的,它们分别表示: (1)前1、2位数字表示:所在省份的代码;(2)第3、4位数字表示:所在城市的代码; (3)第5、6位数字表示:所在区县的代码;(4)第7~14位数字表示:出生年、月、日; (5)第15、16位数字表示:所在地的派出所的代码; (6)第17位数字表示性别:奇数表示男性,偶数表示女性; (7)第18位数字是校验码:校验码可以是0~9的数字,有时也用x表示。 例如:130221************ 或130221************ 13 02 21 2014 12 24 27 1 5 13 02 21 2014 12 24 27 2 x 邮政编码由6位阿拉伯数字组成, 它的前两位数表示省、自治区、直辖市;第三位数表示邮区代号;第四位数表示市(县)的编号;最后两位代表邮件投递局、所。 例如:064002岔河所在地邮政编码或063000 丰南区所在地邮政编码 06 4 0 0 2 06 3 0 0 0 身份证号码是由18位数字组成的,它们分别表示: (1)前1、2位数字表示:所在省份的代码;(2)第3、4位数字表示:所在城市的代码; (3)第5、6位数字表示:所在区县的代码;(4)第7~14位数字表示:出生年、月、日; (5)第15、16位数字表示:所在地的派出所的代码; (6)第17位数字表示性别:奇数表示男性,偶数表示女性; (7)第18位数字是校验码:校验码可以是0~9的数字,有时也用x表示。 例如:130221************ 或130221************ 13 02 21 2014 12 24 27 1 5 13 02 21 2014 12 24 27 2 x 邮政编码由6位阿拉伯数字组成, 它的前两位数表示省、自治区、直辖市;第三位数表示邮区代号;第四位数表示市(县)的编号;最后两位代表邮件投递局、所。 例如:064002岔河镇所在地邮政编码或063000 丰南区所在地邮政编码 0 6 4 0 0 2 0 6 3 0 0 0

18位身份证号码编码规则

18位身份证号码编码规则 一、身份证号码执行标准:18位身份证标准在国家质量技术监督局于1999年7月1日实施的GB11643-1999《公民身份号码》。 GB11643-1999《公民身份号码》为GB11643-1989《社会保障号码》的修订版,其中指出将原标准名称“社会保障号码”更名为“公民身份号码”,另外GB11643-1999《公民身份号码》从实施之日起代替GB11643-1989。 二、编码规则:公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码,可以用字母表示如为ABCDEFYYYYMMDDXXXR。其含义如下: 1. 地址码(ABCDEF):表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按GB/T2260的规定执行。 2. 出生日期码(YYYYMMDD):表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日分别用4位、2位(不足两位加0)、2(同上)位数字表示,之间不用分隔符。 3. 顺序码(XXX):表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。 4.校验码(R),一位数字,通过前17位数字根据一定计算得出。 三、关于地址码含义的详细解释: 身份证前六位是地区代码,我们用ABCDEF表示。 代码的解释规则如下: A:国内区域 1 华北三省二市 2 东北三省 3 华东六省一市 4 华南六省 5 西南四省一市 6 西北五省 7 台湾 8 港澳 B(或者说是AB,就是前2位):省(直辖市,自治区,特别行政区)代码 按照A划定的分区定义省代码,有直辖市的,直辖市列前,其余按离直辖市的距离排序,没有直辖市的,按离北京的远近排序。 具体省(直辖市,自治区,特别行政区)代码如下: 11-15 京 津冀 晋 蒙 21-23 辽 吉黑 31-37 沪 苏浙 皖 闽 赣 鲁 41-46 豫 鄂湘 粤 桂 琼 50-54 渝 川贵 云 藏 61-65 陕 甘青 宁 新 81-82 港 澳 CD:城市代码 从01开始排,对于直辖市,CD=01表示市辖区,CD=02表示辖县;省的城市

18位身份证号码检测

1.针对国内18位身份证号码验证,通过等价类划分法、边界值分析法设计相应的测试用例;根据〖中华人民共和国国家标准GB 11643-1999〗中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。18位身份证号码各位的含义: 1-2位省、自治区、直辖市代码; 3-4位地级市、盟、自治州代码; 5-6位县、县级市、区代码; 7-14位出生年月日,比如19670401代表1967年4月1日; 15-17位为顺序号,其中17位男为单数,女为双数; 18位为校验码,0-9和X。作为尾号的校验码,是由号码编制单位按统一的公式计算出来的。等价类划分法: 输入条件有效等价类无效等价类地址码的第1位是1~8的整数(1) <1的整数(7) >1的整数(8) 地址码2~6位5位每一位都是0~9的整数 (2) 特殊字符 出生年月日7~14位11~12位为[01,12]的整数(3) 13~14位为[01,31]整数(4) 月<01(9) 月>12(10) 日<01(11) 日>31(12) 顺序码15~17位3位每一位都是0~9的整数 (5) 特殊字符 校验码第18位是0~9的整数或者是X(6)特殊字符 号码位数18 0 17 19 测试用例:

序号号 码 位 数 前17位 第18 位 输入内容预期结果 1 0 NULL 输入无效 2 17 4113021990100728 3 输入无效 3 19 41130219901007283 17 输入无效 4 18 (1)(2)(3)(4)(5) (6) 41130219901007283 1(X) 输入正确 5 特殊 字符 41130219901007283 1% 输入无效 6 (6)(2)(3)(4)(5 (6)01130219901007283 1 7 (7)(2)(3)(4)(5)91130219901007283 1 8 (1)特殊字符(3)(4)(5)41@30219901007283 1 9 (1)(2)(9)(4)(5)41130219900007283 1 10 (1)(2)(10)(4)(5)41130219901307283 1 11 (1)(2)(3)(11)(5)41130219901000283 1 12 (1)(2)(3)(12)(5)41130219901032283 1 13 (1) (2) (3) (4) (5) 闰 年 2 月 日为 [01,29] 41130220000227283 1 输入有效 日>29 41130220000230283 1 输入无效平2日为41130219990227283输入有效

用Excel校验身份证号码的方法

用Excel校验身份证号码的方法 威远县东联镇小学校·罗斌 身份证号码中的校验码是身份证号码的最后一位,是根据〖中华人民共和国国家标准GB 11643-1999〗中有关公民身份号码的规定,根据相应的规定计算出来的。公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码,最后一位是数字校验码。 最后一位的数字校验码是由前17位唯一确定的,随便乱填的身份证号就不能通过校验。 下面分步详细介绍一下用Excel校验身份证号码的一种方法: 1.在D1到T1这17个单元格中依次输入1到17这17个数。 2.在D2中输入公式:=2^(18-D1)。单击D2拖动鼠标向右填 充到T2。 3.在D3中输入公式:=MOD(D2,11)以得到身份证第一位的校 验系数。单击D3拖动鼠标向右填充至T3可以得到前17位中每一位的校验系数。 4.在B5至B14中输入要校验的身份证号码(这里选择的是 10个身份证号码),实际选择的身份证号码数可以自定。 5.在D5中输入公式:=MID($B5,D$1,1)*1以提取身份证的第 一个数字,乘1的目的是将第一个数字由文本格式转为数字格式,便于后续的计算。单击D5拖动鼠标向右填充至T5可以得到身份

证号的前17位的每个数字。 6.在U5中输入公式:=SUMPRODUCT($D$3:$T$3,D5:T5)计算出前十七位数字和相应的校验系数的乘积之和。 7.在V5中输入公式:=MOD(1-U5,11)以得到该身份证的校验数。 8.在W5中输入公式:=IF(V5=10,"X",V5)以得到该身份证的校验码。 9.在X5中输入公式:=MID(B5,1,17)&W5得到由前17位计算出的正确的身份证号码。 10.在C5 中输入公式:=IF(B5=X5,"校验正确","号码错误!")以得到第一个身份证的校验结果。 11.选中C5至X5向下拖动鼠标填充到所需位置以显示出所有身份证的校验结果。 12.注意:输入身份证的单元格一定要设置为文本型的,否

相关主题