首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

科普:身份证号为什么不会重复?

每个人出生都有一个出生地,某个省市,某个区县,总会有一个地点,一块空间,具体到身份证号里,几位所代表的正是每个人所在的空间。2.按时间划分。每个人都有生日,生日代表着什么?...因为每个人的身份证号几位因为自己的地域不同而各不相同,中间几位生日不同也不相同,那如果要两个人身份证号要相同需要具备什么样的条件呢?...身份证号码的规则 在身份证号中,在前六位中第一到第二位确定省级市,第三至第四确定地级市,第五至第六确定县级市。...如果要两个人身份证号相同,首先要保证两个人在同一个地区保证身份证号六位相同,接下来需要有相同的生日,保证中间八位相同 ,还剩下最后四位,而最后一位校验码的出现是取决于17位的,所以只有第十五到十七位三个数字是可变化的...男性:10 * 10 * 5 = 550 女性:10 * 10 * 5 = 550 我是男性,从上面可以看出来,如果在我所出生的区(身份证六位精确到区县)并且在我出生的那一天有501个男孩出生,如果保证身份证位数恒定

15.5K43

科普:身份证号为什么不会重复?

每个人出生都有一个出生地,某个省市,某个区县,总会有一个地点,一块空间,具体到身份证号里,几位所代表的正是每个人所在的空间。2.按时间划分。每个人都有生日,生日代表着什么?...因为每个人的身份证号几位因为自己的地域不同而各不相同,中间几位生日不同也不相同,那如果要两个人身份证号要相同需要具备什么样的条件呢?...身份证号码的规则 在身份证号中,在前六位中第一到第二位确定省级市,第三至第四确定地级市,第五至第六确定县级市。...如果要两个人身份证号相同,首先要保证两个人在同一个地区保证身份证号六位相同,接下来需要有相同的生日,保证中间八位相同 ,还剩下最后四位,而最后一位校验码的出现是取决于17位的,所以只有第十五到十七位三个数字是可变化的...男性:10 * 10 * 5 = 550 女性:10 * 10 * 5 = 550 我是男性,从上面可以看出来,如果在我所出生的区(身份证六位精确到区县)并且在我出生的那一天有501个男孩出生,如果保证身份证位数恒定

1.4K20
您找到你想要的搜索结果了吗?
是的
没有找到

身份证号校验规则

第五、六位表示县(市辖区、县级市、旗)。01-18表示市辖区或地区(自治州、盟)辖县级市;21-80表示县(旗);81-99表示省直辖县级市。 第七、十四位表示出生年月日(单数字月日左侧用0补齐)。...其中第一代身份证号码为15位。年份两位数字表示,没有校验码。...六位详情请参考省市县地区代码 X是罗马字符表示数字10,罗马字符(1-12):Ⅰ、Ⅱ、Ⅲ、Ⅳ、Ⅴ、Ⅵ、Ⅶ、Ⅷ、Ⅸ、Ⅹ、Ⅺ、Ⅻ……,详情请参考罗马字符 中国居民身份证校验码算法 步骤如下: 将身份证号码前面的...首先我们得出17位的乘积和【(5*7)+(3*9)+(0*10)+(1*5)+(0*8)+(2*4)+(1*2)+(9*1)+(2*6)+(0*3)+(0*7)+(5*9)+(0*10)+(8*5)+...所以,可以判定这是一个正确的身份证号码。 未经允许不得转载:肥猫博客 » 身份证号校验规则

2K20

身份证号码的那些事

身份证号码组成 下面这个表给出了各位数字的由来。首先是六位,这六位是地址码,就是户口所在地的对应编号,如下图 110105 就是北京朝阳区的编号;中间的八位是出生日期码,对应年月日。...110105地址码 YYYYMMDD出生日期码 接着第十五和十六位是顺序码,具体指同一地址码所标识的区域范围内,对同年同月同日出生的(也就是十四位完全相同)人员编订的顺序号;倒数第二位则是性别码,若男性则为奇数...最后与输入的身份证号的最后一位比对,即可做出一个简单的判断。 ? 安全问题 根据这些知识我们会发现,想要得到一个人的身份证号码相当容易,尤其是和你有些接触的人。...这样他们就掌握了你的身份证的十四位准确信息。根据你的性别还能确定第十七位的奇偶性,而由于第十八位只是一个校验位,因此仅仅需要猜测2.5位的信息。...而身份证号码的暴露,可能也会带来诸多风险,对个人带来不好的影响。 ?

63710

校验身份证号

之前在做项目的时候遇到了需要校验身份证号码,最初始的想法就是校验一下是否数字还有就是校验长度,后来想到有的身份证号的最末尾数字是X,于是又加入了一层判断末尾数为X的判断。...于是就在网上搜了一下,发现身份证号码是有规律和算法的,下面来看一下 根据〖中华人民共和国国家标准 GB 11643-1999〗中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成...排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。 地址码表示编码对象常住户口所在县(市、旗、区)的行政区划代码。...15位的身份证编码首先把出生年扩展为4位,简单的就是增加一个19或18,这样就包含了所有1800-1999年出生的人; 2000年后出生的肯定都是18位的了没有这个烦恼,至于1800年出生的,那啥那时应该还没身份证号这个东东... 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 Wi 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 1 有了上面的算法就产生了如何利用js

2.5K32

SRC另类思路分享:不受限制的资源调用

2.漏洞测试 此处我们先输入自己的真实姓名+身份证号,然后把身份证号的最后一位7,改成5,进行提交,此时可以发现,提示我们需要输入正确的身份证号码,同时Burp没有任何数据包请求,判断此处是前端做了校验...同时可在JS文件中找到相应规则,此处校验不通过会返回false阻止我们进行提交。...console有如下结果: 所以此时,我们需要把身份证号改成一个正确的身份证号,把姓名也改成正确的姓名,同时进行提交,此时可见,在我们的Burp中出现了我们想要的数据包,包含了我们的姓名、身份证号...去做一些事情呢,我这里假设要对别人进行社工,那么他的姓名是XXX,身份证号的后四位或者后六位我不知道,就可以对他进行一个爆破。...此时我们勾选上最后四位,然后把数值调整到0000-9999之间,此时根据返回包的长度大小、可判断身份证号码是否正确。

57910

二代身份证编码规则及校验代码实现

本文主要讨论的是二代身份证编码规则及其Java代码实现,下面的校验方式还不是特别严谨,由于只校验了两位的省份信息,中间六位的出生日期信息和最后一位的校验码信息,故对于部分不满足要求的证件号码刚好同时满足了这里提到的几个条件...,也会被判定为是合法的证件号码… 1 二代身份证号码编码规则 1.1 编码格式 1999年我国颁发了第二代居民身份证号,公民身份号码为18位,且终身不变。...当我们输入身份号码进行实名认证的时候,根据校验码算法可以初步判断你输入身份证号码格式是否正确。...if (id.equals(provinceId)) { return true; } } return false; } 2.4 判断中间的六位日期是否有效.../** * 判断日期是否有效 * @param inDate * @return */ public static boolean isValidDate(String inDate) {

1.4K20

Java开发笔记之利用正则表达式校验字符串学习

正则表达式除了用在split方法中切割字符串,还可以用在matches方法中判断字符串是否符合正则条件。...,中国的二代身份证号码共有18位,其中六位是地区编码,中间八位是公民的出生年月日,后面三位是该地区当日的出生序号,最后一位是校验码。...地区编码的第二位代表大区域下面的具体省区,再后面的位数表示下面的地市乃至县区,通常只要校验地区编码的两位就行了,于是得到如下的地区校验的正则方法代码例子: // 校验身份证号码开头的六位地区编码public...其中出生编码为三位数字,而校验码除了数字以外还可能是小写的x或者大写的X,因此出生编码和校验码也得分别加以判断。...,便形成了最终的身份证号码正则串。

1.2K30

如何通过MD5反查身份证号

题目:设计一个身份证查询系统,将身份证号md5 之后存储,输入md5值查询对应的身份证号。...要求:成本低,查询速度快 设计思路: 将所有可能的身份证号做一个简单的统计计算数据量 根据数据量选择存储方式 查询 身份证生成规则: 身份号码是特征组合码,由十七位数字本体码和最后一位数字校验码组成。...排列顺序从左至右依次为六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。 地址码:表示编码对象常住户口所在县(市、旗、区)的行政区划代码。...:11010519491231002X 预估数据量: 身份证号18位,六位为地区码,中间八位为日期,日期后三位为顺序码,最后一位为校验位,占32个字节 md5值为32位,占32个字节 计算最近100年数据...md5值所在文件,比如输入的 start1 > md5 > start1,可以判断结果可能在file1 中; 第二层为文件内索引,通过md5值判断所在的页,读取根据offset读取该页的全部数据,再通过二分查找找到对应的身份证号

1.7K30

涨姿势:用Python完成15位18位身份证的互转

image 最近工作中刚好要清洗一批客户数据,涉及到身份证号码15位和18位的转换,特意研究了下,在这里分享下。 身份证号码的构成 既然谈到了身份证转换,那就需要先了解下证件号码的构成。 ?...image 公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成; 排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。...校验码计算方法 1、将前面的身份证号码17位数分别乘以不同的系数。...解决思路 15位转18位:即身份证号码的六位数字 + '19' + 身份证第六位以后的数字 + 校验码 (不要问我为什么加19这种白痴(´⊙ω⊙`) @?¥&?...(AiWi), i = 0, … , 16 ,先对17位数字的权求和 计算模Y = mod(S, 11) 通过模得到对应的校验码 Y: 0 1 2 3 4 5 6 7 8 9 10 校验码:

1.9K10

你的身份证号可能被泄露!如何保护自己的隐私?

今天才知道身份证号里面居然有那么多隐私信息,所以写这篇文章,告诉大家,不要随意的泄露自己的身份证号。 不然可能不法分子会找上你。...首先,大家都知道,每个人都有自己的一串和别人不同的身份证号,那这么长一段身份证号上面,到底隐藏了多少我们的个人信息呢?...下面小编告诉你 第一、身份证的六位 身份证的3位是你所在的省代码,4-6位是你的市代码,只要知道了你的六位号就知道了你是哪里人,哪个市的。...身份证号码是公民个人身份的重要凭证,具有不可替代的唯一性。同时,身份证号码是个人隐私信息,应该谨慎保管,不要随意泄露。...因此,我们应该加强个人信息的保护,不要随意将身份证号码泄露给陌生人或在不安全的网络环境下输入身份证号码。在必须输入身份证号码时,应该先确认网站或应用的信誉度和安全性。

45720

【Go】根据身份证(或生日)计算年龄

1)根据身份证信息得到用户出生年月日2)根据出生年月日计算用户当前年龄身份证规则18位身份证号码:18位的第二代身份证号码是特征组合码,由十七位数字本体码和一位校验码组成。...排列顺序从左至右依次为:六位数字地址码、八位数字出生日期码、三位数字顺序码和一位数字校验码。...地址码(六位数):表示身份证编码对象常住户口所在省份、地市,以及县(市、旗、区)的行政区划代码,按照GB/T2260的规定执行。...其中:1、2位数字表示所在省份的代码;第3、4位数字表示所在地市的代码;第5、6位数字表示:所在县(市、旗、区)的代码。...15位身份证号码: 1、第l一6位数为行政区划代码;是指公民第一次申领居民身份证时的常住户口所在地的行政地区。

25831

PYTHON验证身份证号码准确性

大家每个人都有身份证,但是认真研究过自己那18位居民身份证号码的人可能真的不多,今天就跟大家简单聊一下身份证号码的构成形式及最后一位验证码的验证办法。...最开始呐先向大家介绍一下身份证号码的生成规则,特意找了一个最官方的文档,以下内容摘选于国家质量技术监督局编制的GB11643-1999《公民身份号码》 那么根据官方公布的以上五项标准,我们就可以自行提炼出一个居民身份证号码必须满足的一些条件了...六位地址码为我国已有的行政规划代码 3. 出生日期在合理范围内,例如:不会出现当年之后的年份,不会出现大于12的月份,不会出现大于31的日期 4....没关系,简单翻译并且加工一下就是: 1.身份证号17位数分别乘以7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2 2.17位数字和系数相乘的结果相加 3.相加的数据除以11,...10这11个数字,分别对应的身份证最后一位校验码为1,0,X,9,8,7,6,5,4,3,2(这个X其实是罗马数字的10) 根据以上我们提炼的规则我们就可以利用一些算法工具在一些简单的层面上去验证一个身份证号码的真假了

3.1K90

使用正则表达式验证身份证号、QQ号、手机号、邮箱、地址、邮编、银行卡号、学号、车牌号、快递单号、验证码、ISBN号、网址、IPV4地址、IPV6地址、出生年月日、姓名

身份证号 正则表达式 // 正则表达式 身份证号18位 // 1-8{2} 身份证两位代表省直辖市自治区 没有0和9 var isIdentityNum = /^[1-8]{2}[0-9]{4}...-- 页面代码 --> 身份证号: <!...18位 // 1-8{2} 身份证两位代表省直辖市自治区 没有0和9 var isIdentityNum = /^[1-8]{2}[0-9]{4}[0-9]{4}((0[1...siteShowDom.style.color = "red"; } } 邮编 正则表达式 // 正则表达式 邮政编码 // 六位数字...18位 // 1-8{2} 身份证两位代表省直辖市自治区 没有0和9 var isIdentityNum = /^[1-8]{2}[0-9]{4}[0-9]{4}((0[1

5.9K30

浅谈正则表达式验证身份证号码(C# winform)

先大概介绍一下身份证号码的组成情况(来自百度): 目前我国公民身份证号码由18位数字组成:6位为地址码,第7至14位为出生日期码,第15至17位为顺序码,第18位为校验码。...X也是效验代码的一中 15位的身份证号码: (1)1~6位为地区代码 (2)7~8位为出生年份(2位),9~10位为出生月份,11~12位为出生日期 (3)第13~15位为顺序号,并能够判断性别...以上正在表达式(红色部分)只能判断以下3种情况:   1、身份证号码为15位数字; 2、身份证号码为18位数字; 3、身份证号码为17位数字+1个字母    个人觉得,身份证组成还有出生年月至少应该加上一个日期判断...排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。...5、校验码 (1)十七位数字本体码加权求和公式 S = Sum(Ai * Wi), i = 0, … , 16 ,先对17位数字的权求和 Ai:表示第i位置上的身份证号码数字值 Wi:表示第i位置上的加权因子

1.2K20

MySQL深入学习第十一篇-怎么给字符串字段加索引?

因此,我们可以通过统计索引上有多少个不同的值来判断要使用多长的前缀。...比如,我们国家的身份证号,一共 18 位,其中 6 位是地址码,所以同一个县的人的身份证号 6 位一般会是相同的。...由于校验码可能存在冲突,也就是说两个不同的身份证号通过 crc32() 函数得到的结果可能是相同的,所以你的查询语句 where 部分要判断 id_card 的值是否精确相同。...如果你在维护一个学校的学生信息数据库,学生登录名的统一格式是”学号 @gmail.com", 而学号的规则是:十五位的数字,其中前三位是所在城市编号、第四到第六位是学校编号、第七位到第十位是入学年份、最后五位是顺序编号...因为维护的只是一个学校的,因此前面 6 位(其中,前三位是所在城市编号、第四到第六位是学校编号)其实是固定的,邮箱后缀都是 @gamil.com,因此可以只存入学年份加顺序编号,它们的长度是 9 位。

1.8K10

记一次Edu挖掘记录

JS泄露 这里的JS文件有些许奇怪,它以前应该是测试的时候在内网有一个路径Env,从这个Env获取类似于配置的东西,这里应当某个子域名的外网。...直至来到处理Student与Teacher接口,通过一个个寻找发现了存在可用的未授权接口,这两个接口能够获取到所有学生、教师的姓名、班级、身份证号等信息。...剩下最后一个问题就是说,密码是身份证后六位,我该如何得到操作手册中对应用户的身份证呢?...于是我尝试了不用操作手册中的账号,我直接通过了身份证号作为账号,后六位作为密码进行了一次登录,登录成功了,尝试了其它的账号,也都成功了,也就意味着这个学校大量的教师和学生账号泄露出来了。...在后台里面能够访问到该学校的其它管理系统,新闻中心,甚至能够看到协同办公的OA等等 当然还存在了其它的接口也存在未授权的问题,比如说成绩的导出等等,泄露了大量学生的成绩信息、身份证号等等。

12620
领券