Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >第二代身份证 验证

第二代身份证 验证

作者头像
全栈程序员站长
发布于 2022-09-14 06:43:17
发布于 2022-09-14 06:43:17
97600
代码可运行
举报
运行总次数:0
代码可运行

大家好,又见面了,我是你们的朋友全栈君。

今天,在盛大某网站注册的时候,身份证必填,但我又不想填真实身份证号码,于是随便编了串自认为合法的身份证号码,但是却马上被提示号码错误,由于响应速度极快,可以肯定不是联机校验正确性的,那也就是说第二代身份证除了大家都知道的几位表示生日和性别的规则以外,还有另外的自我校验规则。于是翻开页面源码查看,发现这段js没有被压缩,所以规则也很好懂。 就在这里给大家科普下,不知道是不是火星了,呵呵。 以下代码来自 这里,版权归盛大。当然,你也可以在 维基百科找到更详细的介绍和算法。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
iW = new Array(7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1);
iSum = 0;
for( i=0;i<17;i++){
    iC = v_card.charAt(i) ;
    iVal = parseInt(iC);
    iSum += iVal * iW[i];
}
iJYM = iSum % 11;
var sJYM = '';
if(iJYM == 0) sJYM = "1";
else if(iJYM == 1 ) sJYM = "0";
else if(iJYM == 2 ) sJYM = "x";
else if(iJYM == 3 ) sJYM = "9";
else if(iJYM == 4 ) sJYM = "8";
else if(iJYM == 5 ) sJYM = "7";
else if(iJYM == 6 ) sJYM = "6";
else if(iJYM == 7 ) sJYM = "5";
else if(iJYM == 8 ) sJYM = "4";
else if(iJYM == 9) sJYM = "3";
else if(iJYM == 10) sJYM = "2";
var cCheck = v_card.charAt(17).toLowerCase();
if( cCheck != sJYM ){
    return false; //对不上就是假号码
}
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
文章链接:http://luy.li/2011/01/01/sfzhm/

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/153637.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
详解正则表达式实现二代身份证号码验证[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/153620.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/14
1.2K0
二代身份证号码验证器[超简单]
第十八位的数字是根据ISO 7064:1983.MOD 11-2校验码算法计算出来的
全栈程序员站长
2022/09/14
1.4K0
PAT(乙级)1031.查验身份证(15)
一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下: 首先对前17位数字加权求和,权重分配为:{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};然后将计算的和对11取模得到值Z;最后按照以下关系对应Z值与校验码M的值:
lexingsen
2022/02/25
2930
二代身份证校验[通俗易懂]
大家好,又见面了,我是你们的朋友全栈君。百度一搜就能搜到很多身份证校验的例子,这个是最近做项目参考百度文库的demo修改后的 一,js:
全栈程序员站长
2022/09/14
1.4K0
Python计算身份证第18位(校验码)来判断身份证是否输入正确
例如:某女性的身份证号码是220202202002020022。我们要看看这个身份证是不是合法的身份证。 首先我们得出前17位的乘积和是98,然后用98除以11得出其余数是10。最后通过对应规则就可以知道余数10对应的数字是2。所以,可以判定这是一个合格的身份证号码。
zeruns
2020/03/23
4.9K0
身份证扩展(类构造与析构)Java
在 15 位身份证号中,第 7、8 两位为出生年份,例如,1980 年出生的人,身份证号码的第 7、8 位的值是 80,在 18 位身份证号中,将 7~10 四位的值改为 1980,并将原身份证号码第 9 位开始以后的所有数字依次向右平移 2 位。在 18 位身份证号中, 最后增加一位校验码,校验码的计算方法如下(只考虑 20 世纪出生的公民):
叶茂林
2023/07/30
1780
Java 验证二代身份证号码是否正确
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/153667.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/14
4990
身份证校验工具类IdcardUtils
package com.kaigejava.util; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.Map;   import org.apache.commons.lang.StringUtils; publ
凯哥Java
2019/06/30
2.6K0
浅谈正则表达式验证身份证号码(C# winform)
目前我国公民身份证号码由18位数字组成:前6位为地址码,第7至14位为出生日期码,第15至17位为顺序码,第18位为校验码。检验码分别是“0、1、2、……10”共11个数字,当检验码为“10”时,为了保证公民身份证号码18位,所以用“X”表示。虽然校验码为“X”不能更换,但若需全用数字表示,只需将18位公民身份号码转换成15位居民身份证号码,去掉第7至8位和最后1位3个数码。
全栈程序员站长
2021/08/12
1.6K0
二代身份证编码规则及校验代码实现
本文主要讨论的是二代身份证编码规则及其Java代码实现,下面的校验方式还不是特别严谨,由于只校验了前两位的省份信息,中间六位的出生日期信息和最后一位的校验码信息,故对于部分不满足要求的证件号码刚好同时满足了这里提到的几个条件,也会被判定为是合法的证件号码…
全栈程序员站长
2022/09/14
1.7K0
1031. 查验身份证(15)
一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下:
AI那点小事
2020/04/20
4150
1031. 查验身份证(15)
C#验证二代身份证号码
身份证号码的验证及15位升18位算法 18位身份证标准在国家质量技术监督局于1999年7月1日实施的GB11643-1999《公民身份号码》中做了明确的规定。 GB11643-1999《公民身份号码》为GB11643-1989《社会保障号码》的修订版,其中指出将原标准名称”社会保障号码”更名为”公民身份号码”,另外GB11643-1999《公民身份号码》从实施之日起代替GB11643-1989。GB11643-1999《公民身份号码》主要内容如下: 一、范围 该标准规定了公民身份号码的编码对象、号码的结构和表现形式,使每个编码对象获得一个唯一的、不变的法定号码。 二、编码对象 公民身份号码的编码对象是具有中华人民共和国国籍的公民。 三、号码的结构和表示形式 1、号码的结构 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。 2、地址码 表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按GB/T2260的规定执行。 3、出生日期码 表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日代码之间不用分隔符。 4、顺序码 表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。 5、校验码 (1)十七位数字本体码加权求和公式 S = Sum(Ai * Wi),先对前17位数字的权求和 Ai:表示第i位置上的身份证号码数字值 Wi:表示第i位置上的加权因子 Wi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
全栈程序员站长
2022/09/14
3480
涨姿势:用Python完成15位18位身份证的互转
最近工作中刚好要清洗一批客户数据,涉及到身份证号码15位和18位的转换,特意研究了下,在这里分享下。
Python攻城狮
2019/11/07
2.7K0
涨姿势:用Python完成15位18位身份证的互转
身份证的校验规则
/* * 身份证15位编码规则:dddddd yymmdd xx p * dddddd:6位地区编码 * yymmdd: 出生年(两位年)月日,如:910215 * xx: 顺序编码,系统产生,无法确定 * p: 性别,奇数为男,偶数为女 * * 身份证18位编码规则:dddddd yyyymmdd xxx y * dddddd:6位地区编码
Happy、Liu
2019/04/24
2.5K0
jquery验证二代身份证
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/153649.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/14
1K0
身份证号码大 全_622628是哪里的身份证号码
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/170899.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/23
1K0
JS身份证真实性验证
if (testId('320888888888888888') == false) { layer.msg("身份证号不正确!"); return false; } //身份证真实性验证 function testId(value) { var vcity = { 11: "北京", 12: "天津", 13: "河北", 14: "山西", 15: "内蒙古", 21: "辽宁", 22: "吉林", 23: "黑龙江", 31: "上海", 32
闻语博客
2021/01/21
2.5K0
java验证身份证号码是否有效源代码
1、描述 用java语言判断身份证号码是否有效,地区码、出身年月、校验码等验证算法 2、源代码 package test; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.GregorianCalendar; import java.util.Hashtable;
代码伴一生
2021/09/19
1.1K0
【Go】根据身份证(或生日)计算年龄
我们计算用户的年龄,当然只能根据用户的出生年月日信息来计算。这里我们定义:用户出生满1年后,年龄算1岁,不满1年算0岁,以此类推,大于1年不到2年算1岁。
后端码匠
2023/11/12
4870
c语言身份证号码验证
15位的身份证号转为18位即可按同样方法来验证(如 130321860311519 ,15位,需要补为 130321XX860311519X ,前两个XX替换为19,后一个X按规则算出来)。
杨永贞
2020/08/05
2.3K0
相关推荐
详解正则表达式实现二代身份证号码验证[通俗易懂]
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验