JS前后端实现身份证号验证代码解析


Posted in Javascript onJuly 23, 2020

前言

实名制是许多网站都必备的功能,因此用户经常需要输入身份证号,但是我们无法连通公安局的数据库进行验证身份证和姓名地址是否匹配,因此可以根据身份证生成的规则来进行身份证格式的验证,以下仅介绍二代身份证的验证。

计算公式

公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。

排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位校验码。

1、地址码:表示编码对象常住户口所在县(市、旗、区)的行政区域划分代码,按GB/T2260的规定执行。

2、出生日期码:表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日代码之间不用分隔符。

3、顺序码:表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。

4、校验码计算步骤:

(1)十七位数字本体码加权求和公式:

S = Sum(Ai * Wi), i = 0, … , 16 ,先对前17位数字的权求和;

Ai:表示第i位置上的身份证号码数字值(0~9);

Wi:7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 (表示第i位置上的加权因子);

(2)计算模: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;

前端验证

const weight = [7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2];//十七位数字本体码权重
const validate = ['1','0','X','9','8','7','6','5','4','3','2'];//mod11,对应校验码字符值

function getValidateCode(id17){
 let sum = 0;
 let mode = 0;
 [...id17].forEach((elem,i) => {
  sum=sum+parseInt(elem)*weight[i];
 });
 mode = sum % 11;
 return validate[mode];
}
console.log("该身份证验证码:"+ getValidateCode("14230219700101101"));//该身份证验证码:3

后端验证(Java)

public class Id18 {
 int[] weight={7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2};//十七位数字本体码权重
 char[] validate={ '1','0','X','9','8','7','6','5','4','3','2'};//mod11,对应校验码字符值  
 
 public char getValidateCode(String id17){
   int sum = 0;
   int mode = 0;
   for(int i = 0; i < id17.length(); i++){
     sum=sum+Integer.parseInt(String.valueOf(id17.charAt(i)))*weight[i];
   }
   mode = sum % 11;
   return validate[mode];
 }
 
 public static void main(String[] args){
   Id18 tes t= new Id18();
   System.out.println("该身份证验证码:"+test.getValidateCode("14230219700101101"));//该身份证校验码:3
 }
}

总结

身份证验证和手机号邮箱等格式验证是一样的,都要做前后端双重验证,前端验证不通过就不劳烦后端验证,减轻服务器的压力;

至于一代身份证的验证大家也可以查询下相关的算法,在原基础上改改即可,我感觉现在好像也没有一代身份证了,亦或者用一代身份证的人都不怎么上网,因此这里就不写了。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript利用初始化数据装配模版的实现代码
Nov 17 Javascript
Jquery中显示隐藏的实现代码分析
Jul 26 Javascript
原生js做的手风琴效果的导航菜单
Nov 08 Javascript
js中call与apply的用法小结
Dec 28 Javascript
javascript断点调试心得分享
Apr 23 Javascript
js获取页面及个元素高度、宽度的代码
Apr 26 Javascript
Node.js的Web模板引擎ejs的入门使用教程
Jun 06 Javascript
three.js快速入门【推荐】
Jan 21 Javascript
bootstarp modal框居中显示的实现代码
Feb 18 Javascript
jQuery响应滚动条事件功能示例
Oct 14 jQuery
node.js中path路径模块的使用方法实例分析
Feb 13 Javascript
基于JavaScript实现省市联动效果
Jun 22 Javascript
vue实现用户长时间不操作自动退出登录功能的实现代码
Jul 23 #Javascript
在vue中封装的弹窗组件使用队列模式实现方法
Jul 23 #Javascript
基于JS实现计算24点算法代码实例解析
Jul 23 #Javascript
javascript递归函数定义和用法示例分析
Jul 22 #Javascript
简单了解vue 插值表达式Mustache
Jul 22 #Javascript
详解node.js 事件循环
Jul 22 #Javascript
jQuery+ThinkPHP实现图片上传
Jul 23 #jQuery
You might like
PHP生成静态页面详解
2006/12/05 PHP
实现了一个PHP5的getter/setter基类的代码
2007/02/25 PHP
PHP实现Socket服务器的代码
2008/04/03 PHP
php ignore_user_abort与register_shutdown_function 使用方法
2009/06/14 PHP
php多功能图片处理类分享(php图片缩放类)
2014/03/14 PHP
php获取客户端IP及URL的方法示例
2017/02/03 PHP
JQuery的一些小应用收集
2010/03/27 Javascript
利用js 进行输入框自动匹配字符的小例子
2013/06/29 Javascript
跟我学习javascript的this关键字
2020/05/28 Javascript
Knockout自定义绑定创建方法
2015/12/26 Javascript
原生js实现节日时间倒计时功能
2017/01/18 Javascript
JS简单实现滑动加载数据的方法示例
2017/10/18 Javascript
vue综合组件间的通信详解
2017/11/06 Javascript
实时监控input框,实现输入框与下拉框联动的实例
2018/01/23 Javascript
Vue数据监听方法watch的使用
2018/03/28 Javascript
记React connect的几种写法(小结)
2018/09/18 Javascript
微信小程序实现的点击按钮 弹出底部上拉菜单功能示例
2018/12/20 Javascript
vue 组件中使用 transition 和 transition-group实现过渡动画
2019/07/09 Javascript
javascript实现放大镜功能
2020/12/09 Javascript
关于element的表单组件整理笔记
2021/02/05 Javascript
Python 第一步 hello world
2009/09/25 Python
pyramid配置session的方法教程
2013/11/27 Python
基python实现多线程网页爬虫
2015/09/06 Python
用python找出那些被“标记”的照片
2017/04/20 Python
tensorflow 使用flags定义命令行参数的方法
2018/04/23 Python
pip install urllib2不能安装的解决方法
2018/06/12 Python
Python动态参数/命名空间/函数嵌套/global和nonlocal
2019/05/29 Python
python实现键盘输入的实操方法
2019/07/16 Python
Python爬取知乎图片代码实现解析
2019/09/17 Python
python3正则模块re的使用方法详解
2020/02/11 Python
浅析python 动态库m.so.1.0错误问题
2020/05/09 Python
分享CSS3制作卡片式图片的方法
2016/07/08 HTML / CSS
adidas美国官网:adidas US
2016/09/21 全球购物
奥地利时尚、美容、玩具和家居之家:Kastner & Öhler
2020/04/26 全球购物
本科生就业推荐信
2014/05/19 职场文书
毕业生实习期转正自我鉴定
2014/09/26 职场文书