【学习】身份证号获取个人信息
来源:互联网 发布:mysql 数据库设计模式 编辑:程序博客网 时间:2024/05/17 03:18
身份证具有明显的代表唯一性,通过身份证号可以获取到哪些信息?社保在校验添加缴费人信息时,需要根据输入的身份证号获取信息,格式验证通过后将获取到的信息填充。这就需要了解一些规格。
现在新一代的身份证居多,这里以18位的新身份证为例,第十五位到十七位(也可理解判断倒数第二位的奇偶数)是奇数为男,偶数为女。(不信可以查看自己的身份证号核实)
前六位:是第一次领取民身份证时的常住户口所在县(市、旗、区)的行政区划代码。(所有区域的编码可以到这个网站http://www.stats.gov.cn/tjsj/tjbz/xzqhdm/201703/t20170310_1471429.html查询到最新的县及县以上的行政编码资料。)首先前两位代码省份:11——北京 12——天津 13——河北 14——山西 15——内蒙古自治区 另四位代表你户口所在的市县。
第七位到第十四位表示编码对象出生的年、月、日,其中年份用四位数字表示,年、月、日之间不用分隔符。例如:1981年05月11日就用19810511表示。
第十五为到十七位:判断性别的神数字。奇数为男性,偶数为女性。
最后一位 :是根据前面十七位数字码,按照ISO7064:1983.MOD11-2校验码计算出来的检验码(通常是 1,0,x,9,8,7,6,5,4,3,2)。
代码:
public static bool CheckChinaIDCardNumberFormat(string idCardNumber) { string idNumber = idCardNumber; bool result = true; try { if (idNumber.Length != 18) { return false; } long n = 0; if (long.TryParse(idNumber.Remove(17), out n) == false || n < Math.Pow(10, 16) || long.TryParse(idNumber.Replace('x', '0').Replace('X', '0'), out n) == false) { return false;//数字验证 } string address = "11x22x35x44x53x12x23x36x45x54x13x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82x91"; if (address.IndexOf(idNumber.Remove(2)) == -1) { return false;//省份验证 } string birth = idNumber.Substring(6, 8).Insert(6, "-").Insert(4, "-"); DateTime time = new DateTime(); if (DateTime.TryParse(birth, out time) == false) { return false;//生日验证 } string[] arrVarifyCode = ("1,0,x,9,8,7,6,5,4,3,2").Split(','); string[] Wi = ("7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2").Split(','); char[] Ai = idNumber.Remove(17).ToCharArray(); int sum = 0; for (int i = 0; i < 17; i++) { sum += int.Parse(Wi[i]) * int.Parse(Ai[i].ToString()); } int y = -1; Math.DivRem(sum, 11, out y); if (arrVarifyCode[y] != idNumber.Substring(17, 1).ToLower()) { return false;//校验码验证 } return true;//符合GB11643-1999标准 } catch (Exception ex) { logger.Error("CheckChinaIDCardNumber 身份证校验失败 号码:" + idNumber, ex); result = false; } return result; }
/// <summary> /// 获取性别 -1 出错 0男 1女 /// </summary> /// <param name="idCardNumber"></param> /// <returns></returns> public static int GetSexFromChinaIDCardNumber(string idCardNumber) { int sex = -1; try { string sexStr = idCardNumber.Substring(14, 3); if (int.Parse(sexStr) % 2 == 0) { return SexEnum.Female;//1; } else { return SexEnum.Man; ; } } catch (Exception ex) { logger.Error("GetSexFromChinaIDCardNumber 通过身份证获取性别失败:" + idCardNumber, ex); } return sex; }
阅读全文
0 0
- 【学习】身份证号获取个人信息
- 根据身份证号获取个人信息的类
- 通过输入身份证号验证个人信息
- 基于XMPP开发学习------(2)注册、获取个人信息、自动连接
- openfire 个人信息获取
- 火车票二维码获取身份证号
- 通过身份证号获取年龄
- 根据身份证号获取性别
- Android获取通信录个人信息
- 身份证号验证并获取出生日期
- 个人信息:
- 个人信息
- 个人信息
- 个人信息
- 个人信息
- 个人信息
- 个人信息
- 个人信息
- vim 查找统计一个字符串出现次数
- Intellij mac快捷键
- 模式识别和机器学习 笔记
- 首先谢谢大家的关注!
- 基于深度学习的图像语义分割技术概述之4常用方法
- 【学习】身份证号获取个人信息
- 将一组阿拉伯数字转换成中文大写数字
- 矩阵快速幂练习
- 关于STM32能否使用malloc申请动态内存的问题
- 1981年柏林的德国逻辑思考学院面试题,逆天5*5推理题!
- 【Kotlin】基础语法学习
- 测试的一些基本
- python中 subprocess shell=False 与shell=True的区别
- sqlilabs 下的less7