身份证号的第7-14位为出生年月日,比如19670401代表1967年4月1日;其中第17位(倒数第二位)男为奇数,女为偶数;18位为校验码,0-9和X,作为尾号的校验码。...核心思路 C语言头文件 中的 scanf(); 输入身份证号,利用 %nd(n为整数,在这里表述读入几位数)将身份证分段读入,若第17位数为奇数,则性别为男;若第17位数为偶数,则性别为女...,最后用C语言头文件 中的 printf(); 输出生日和性别。...源代码如下: #include int main() { int i, yy, mm, dd, j, k; char m; printf("请输入18位身份证号...: 421102200202023233 生日:2002年02月02日 性别:男
1)根据身份证信息得到用户出生年月日2)根据出生年月日计算用户当前年龄身份证规则18位身份证号码:18位的第二代身份证号码是特征组合码,由十七位数字本体码和一位校验码组成。...排列顺序从左至右依次为:六位数字地址码、八位数字出生日期码、三位数字顺序码和一位数字校验码。...15位身份证号码: 1、第l一6位数为行政区划代码;是指公民第一次申领居民身份证时的常住户口所在地的行政地区。...2、第7—12位数为出生日期代码; 第7、8位为出生年份(两位数),第9、10位为出生月份,第11、12位代表出生日期。...实例代码package mainimport ("fmt""strconv""time")// getBirthday 根据身份证获取对应生日func getBirthday(cardId string
最近的项目中需要根据身份证号来计算年龄。废话少说,上代码。 private static final int invalidAge = -1;//非法的年龄,用于处理异常。.../** *根据身份证号码计算年龄 * @param idNumber 考虑到了15位身份证,但不一定存在 */ public static int getAgeByIDNumber...(idNumber.length() == 18) { dateStr = idNumber.substring(6, 14); } else {//默认是合法身份证号...} catch (ParseException e) { return invalidAge; } } /** *根据生日计算年龄...* @param dateStr 这样格式的生日 1990-01-01 */ public static int getAgeByDateString(String dateStr
本文由来源 21aspnet,由 javajgs_com 整理编辑,其版权均为 21aspnet 所有,文章内容系作者个人观点,不代表 Java架构师...
前段时间的攻击中,我获取了目标的身份证号码,结果缺少最后一位 在经过多次查阅后得出以下资料 (一)18身份证号码的结构 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。...排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码。 ...2、出生日期码 表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日代码之间不用分隔符。 ...4、校验码计算步骤 (1)十七位数字本体码加权求和公式 S = Sum(Ai * Wi), i = 0, ... , 16 ,先对前17位数字的权求和 Ai:表示第i位置上的身份证号码数字值... 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 (二)根据17位数字本体码获取最后一位校验码程序实例
标签:Excel技巧 有时候,我们需要根据身份证号码来自动生成出生日期、性别和年龄,有多种方法来实现,下面介绍几种,供参考。 首先,我们来生成出生日期。...方法1:使用分列功能 选择要生成出生日期的身份证号码,单击功能区“数据”选项卡“数据工具”组中的“分列”。在弹出的“文本分列向导”对话框中,选择“固定宽度”,如下图1所示。...图1 单击“下一步”,在“数据预览”中,单击代表出生日期的数字两侧,添加分隔线,如下图2所示。...可见,在单元格D2中已经拆分出了出生日期。 图4 此时,我们可以删除列C和列E,仅保留出生日期列。...图8 而性别由身份证倒数第二位指定,奇数代表男性,偶数代表女性,示例公式如下: =IF(ISODD(MID(B2,17,1)),"男","女") 结果如下图9所示。
image 最近工作中刚好要清洗一批客户数据,涉及到身份证号码15位和18位的转换,特意研究了下,在这里分享下。 身份证号码的构成 既然谈到了身份证转换,那就需要先了解下证件号码的构成。 ?...image 公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成; 排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。...六位数字地址码:表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按 GB/T 2260 的规定执行。 八位数字出生日期码:表示编码对象出生的年、月、日,按 GB/T 7408 的规定执行。...某人出生日期为 1995年08月12日,其出生日期码为 19950812。...解决思路 15位转18位:即身份证号码的前六位数字 + '19' + 身份证第六位以后的数字 + 校验码 (不要问我为什么加19这种白痴(´⊙ω⊙`) @?¥&?
新公司框架源码的时候,发现了这个功能,于是搜索一番并封装了一下身份证号校验的类。 目前大家的身份证号大多是 18 位的,当然,也不排除有些老人的身份证号是 15 位的。...如果强制要求是 18 位的话,会比较好,因为 15 位的身份证号没有校验码,可以说,只要了解大概结构,随手都可以造出一系列身份证号码来。...身份证号规则 15位:省份(2位) + 地级市(2位) + 县级市(2位) + 出生年(2位) + 出生月(2位) + 出生日(2位) + 顺序号(3位) 18位:省份(2位) + 地级市(2位) +...县级市(2位) + 出生年(4位) + 出生月(2位) + 出生日(2位) + 顺序号(3位) + 校验位(1位) 相比之下, 18位 比 15位 多出生年 2位 、校验位 1位 。...当然,因为可能部分人用的是 15位 的身份证号,所以需要一个转换的办法,不过,这里还是建议限制需要 18位 的身份证号。
本文实例讲述了PHP实现15位身份证号转18位的方法。...分享给大家供大家参考,具体如下: 第一代身份证:15位身份证号码的意义 1-2位省、自治区、直辖市代码; 3-4位地级市、盟、自治州代码; 5-6位县、县级市、区代码; 7-12位出生年月日...,比如670401代表1967年4月1日,这是和18位号码的第一个区别; 13-15位为顺序号,其中15位男为单数,女为双数; 与18位身份证号的第二个区别:没有最后一位的校验码。...第二代身份证:18位身份证号码的意义 ①前1、2位数字表示:所在省份的代码,河南的省份代码是41哦! ...位数字表示性别:奇数表示男性,偶数表示女性; ⑦第18位数字是校检码:也有的说是个人信息码,一般是随计算机随机产生,用来检验身份证的正确性。
前言 有时候,我们希望通过身份证来计算出年龄,那么下面我写的函数很适合。 实现 代码中已有详细注释。...function getAge($id){ # 1.从身份证中获取出生日期 $id = $id;//身份证 $birth_Date = strtotime(substr($id, 6, 8));//截取日期并转为时间戳...# 2.格式化[出生日期] $Year = date('Y', $birth_Date);//yyyy $Month = date('m', $birth_Date);//mm $Day = date...$current_M = date('m');//mm $current_D = date('d');//dd # 4.计算年龄() $age = $current_Y - $Year;//今年减去生日年...# 参数必须为 String 型 echo getAge('130322xxxxxxxxxx14'); // xx 小编再为大家分享一段代码:身份证获取年龄信息: /* * 根据身份证号码获取年龄 *
最近突发奇想,想写一个小脚本来生成一个身份证后6位的小字典。因为学校有时候会发布的一些统一的账号表,例如校园网的账号密码,通常账号名为学号,密码则为身份证后6位,所以有时候可能会派上用场 ? ?...首先需要了解一下身份证号码结构: 1~6,地址码,常住户口所在地的行政区划代码 7~14,出生年月日 15~17,顺序码,且第17位由性别决定。...出生年月日 001,第17位为1即男性 0,最后一位为校验码 如果需要爆破后6位,即身份证的第13~18位,那么就有10*10*10*10*10*11(最后一位有0~X共11位)种可能 后6位中的第1位...,即出生日期的十位,只能为0~3,即4*10*10*10*10*11 而如果是针对某人而写的字典,知道目标的性别,那么第5位就可以减掉一半。...男性为1/3/5/7/9,女性为0/2/4/6/8,即4*10*10*10*5*11 同时,如果知道目标的出生日期(学校发的很多信息表中都会包含出生年月日等信息),即第1~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。...其分别对应的最后一位身份证的号码为1-0-X-9-8-7-6-5-4-3-2。 通过上面得知如果余数是2,就会在身份证的第18位数字上出现罗马数字的Ⅹ。如果余数是10,身份证的最后一位号码就是2。...例如:某女性的身份证号码是220202202002020022。我们要看看这个身份证是不是合法的身份证。 首先我们得出前17位的乘积和是98,然后用98除以11得出其余数是10。
private static Pattern pattern = Pattern.compile("^(\\d{18}|\\d{15}|\\d{17}X)$"); /** * 根据身份证号获取性别...} } } return new ImmutablePair(sexInt, sexString); } /** * 根据身份证号获取年龄...if (idCard.length() == FIFTEEN_ID_CARD) { // 身份证上的年份(15位身份证为1980年前的)...} } } return age; } /** * 获取出生日期 yyyy年MM月dd日...(8, 10); //身份证上的日期 day = idCard.substring(10, 12); //18位身份证号
一、身份证号规则 18位身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码。...其中前两位为省份编码。 出生日期码:表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日分别用4位、2位、2位数字表示,之间不用分隔符。...三、18位身份证号码验证函数(MySQL) delimiter // CREATE FUNCTION `fn_checkidcard`(p_idcard varchar(100)) RETURNS varchar...'); else return ('身份证校验位错误'); end if; else return ('身份证格式错误...'); end if; else return ('身份证号码不是18位'); end if; end // delimiter ;
1、需求: 从身份证号里提取出出生日期、性别。 2、举例: 接着上一次的例子,表格汇总完成后,你又得到了一个任务,需要对表格的数据进行处理,需要增加出生日期、性别。...可是你一看表格,完了,没有收集出生日期、性别这些信息! 难道要重新收集一次? 3、代码实现 身份证编码是有规律的,只要知道了规律,我们就能够从中提取出自己所需要的数据。...baidu一下身份证编码规则就能知道,18位身份证规则: 前1、2位数字表示:所在省(直辖市、自治区)的代码; 第3、4位数字表示:所在地级市(自治州)的代码; 第5、6位数字表示:所在区(县、自治县、...县级市)的代码; 第7-14位数字表示:出生年、月、日; 第15、16位数字表示:所在地的派出所的代码; 第17位数字表示性别:奇数表示男性,偶数表示女性; 第18位数字表示:校检码 15位身份证规则:...) Else d.Result(i - 1, ResultEnum.出生日期) = "身份证号码有误" End If Next
以上,如果我们输入一个正确的身份证号码,系统可以正常解析;但是篡改其中一位的话,校验结果直接显示无效;如果少输入一位的话,系统会提示“请输入18位”。 二、认识身份证号码 身份证号码的构成如下: ?...检查校验码 (1) 对身份证号码进行切片 首先我们把获取到的身份证号码分成地区码、生日码、顺序码、校验码,四个部分,存储在列表id_list[]中。...获取身份证号码的前17位存储在number中,然后对17位数字分别乘以系数[7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2],累加得出结果后对11进行取余,将获得的结果作为索引取出列表...效果演示: 情况一:输入的身份证号码不满18位(我们故意输入17位): ? 身份证号码输入位数不足的情况 情况二:最后一位校验位错误(本来是7我们故意输入8) ?...“身份证信息校验系统”获取全套的源码、素材、及数据源,一起上手体验一下这个项目。
18位数字组合的方式是: 1 1 0 1 0 2 Y Y Y Y M M D D 8 8 8 X 区域码(6位) 出生日期码(8位) 顺序码(2位) 性别码(1位) 校验码(1位) 区域码(6位) 出生日期码...出生日期码 表示公民出生的公历年(4位)、月(2位)、日(2位)。 ?顺序码 表示在同一区域码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号。 ?...校验码为一位数,但如果最后采用校验码系统计算的校验码是“10”,碍于身份证号码为18位的规定,则以“X”代替校验码“10”。 校验码计算方法 ?1....4. a_1=(12-( S bmod 11)) bmod 11 使用Python获取身份证校验码: def get_check_digit(id_number): """通过身份证号获取校验码"...][0]) # 限定出生日期范围(8位数) start, end = "1960-01-01", "2000-12-30" days = (datetime.datetime.strptime
0x01 身份证号码结构 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。...其分别对应的最后一位身份证的号码为1 0 X 9 8 7 6 5 4 3 2; 5、通过上面得知如果余数是2,就会在身份证的第18位数字上出现罗马数字的X。...fr=aladdin 0x03 思路 一个完整的身份证号码包括地址码,出生日期码,顺序码,校验码。...那么我们可以通过社工的手段获取到对方的地址和出生日期(相信这对各位黑阔大佬,社工大佬不是什么问题),这样我们就得到了地址码加出生日期码。...这样列出来的男性身份证号的字典有500种可能,女性身份证号码的字典则有499种可能。 0x04 代码分析 import os #根据地址码,出生日期码,性别生成身份证号码字典函数。
true : false; } /** * 验证中国香港身份证号码(存在Bug,部份特殊身份证无法检查) * * 身份证前2位为英文字符,如果只出现一个英文字符则表示第一位是空格...,对应数字58 前2位英文字符A-Z分别对应数字10-35 * 最后一位校验码为0-9的数字加上字符"A","A"代表10 * * * 将身份证号码全部转换为数字... iAge = iCurrYear - Integer.valueOf(year); return iAge; } /** * 根据身份编号获取生日...idCard); } return Short.valueOf(idCard.substring(6, 10)); } /** * 根据身份编号获取生日月...idCard); } return Short.valueOf(idCard.substring(10, 12)); } /** * 根据身份编号获取生日天
#大陆18位身份证 validator.is_valid(‘610104620927690’) #大陆15位身份证 validator.is_valid(‘810000199408230021...’) #港澳18位身份证 validator.is_valid(‘830000199201300022’) #台湾18位身份证 ?...(4)、接着,通过这个库底下的某个方法可以获取身份证相关的信息,输入命令:print(validator.get_info(‘330221199306084914’)) ?...') # 港澳居民居住证 18 位 validator.is_valid('830000199201300022') # 台湾居民居住证 18 位 获取身份证号信息(解析身份证号) 当身份证号合法时,返回分析信息...(地区、出生日期、星座、生肖、性别、校验位),不合法返回 False: from id_validator import validator validator.get_info('440308199901101512
领取专属 10元无门槛券
手把手带您无忧上云