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 相关文章推荐
jquery HotKeys轻松搞定键盘事件代码
Aug 30 Javascript
javascript实现tabs选项卡切换效果(扩展版)
Mar 19 Javascript
加载远程图片时,经常因为缓存而得不到更新的解决方法(分享)
Jun 26 Javascript
JS+CSS实现仿新浪微博搜索框的方法
Feb 24 Javascript
JS实现网页游戏中滑块响应鼠标点击移动效果
Oct 19 Javascript
jQuery实现Email邮箱地址自动补全功能代码
Nov 03 Javascript
JS for循环中i++ 和 ++i的区别介绍
Jul 20 Javascript
jQuery的事件预绑定
Dec 05 Javascript
ES6教程之for循环和Map,Set用法分析
Apr 10 Javascript
JS监控关闭浏览器操作的实例详解
Sep 12 Javascript
微信小程序表单弹窗实例
Jul 19 Javascript
如何在vue中使用HTML 5 拖放API
Jan 14 Vue.js
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 面向对象之成员方法详解
2013/05/04 PHP
php数组查找函数in_array()、array_search()、array_key_exists()使用实例
2014/04/29 PHP
CodeIgniter自定义控制器MY_Controller用法分析
2016/01/20 PHP
php获取文件后缀的9种方法
2016/03/22 PHP
YII框架中使用memcache的方法详解
2017/08/02 PHP
PHP运用foreach神奇的转换数组(实例讲解)
2018/02/01 PHP
js不能跳转到上一页面的问题解决方法
2013/03/01 Javascript
javascript基础之查找元素的详细介绍(访问节点)
2013/07/05 Javascript
jquery如何获取复选框的值
2013/12/12 Javascript
js中substr,substring,indexOf,lastIndexOf的用法小结
2013/12/27 Javascript
快速解决jQuery与其他库冲突的方法介绍
2014/01/02 Javascript
无需 Flash 使用 jQuery 复制文字到剪贴板
2016/04/26 Javascript
jquery 属性选择器(匹配具有指定属性的元素)
2016/09/06 Javascript
js实时监控文本框输入字数的实例代码
2018/01/18 Javascript
微信小程序异步API为Promise简化异步编程的操作方法
2018/08/14 Javascript
react-navigation之动态修改title的内容
2018/09/26 Javascript
D3.js(v3)+react 实现带坐标与比例尺的柱形图 (V3版本)
2019/05/09 Javascript
使用layer弹窗,制作编辑User信息页面的方法
2019/09/27 Javascript
基于redis的小程序登录实现方法流程分析
2020/05/25 Javascript
Angular短信模板校验代码
2020/09/23 Javascript
用Python设计一个经典小游戏
2017/05/15 Python
Python + selenium自动化环境搭建的完整步骤
2018/05/19 Python
使用pandas将numpy中的数组数据保存到csv文件的方法
2018/06/14 Python
python 使用递归回溯完美解决八皇后的问题
2020/02/26 Python
pygame用blit()实现动画效果的示例代码
2020/05/28 Python
移动端Web页面的CSS3 flex布局快速上手指南
2016/05/31 HTML / CSS
FILA斐乐中国官方商城:意大利运动品牌
2017/01/25 全球购物
个人自荐信
2013/12/05 职场文书
廉政教育心得体会
2014/01/01 职场文书
现金出纳岗位职责
2014/03/15 职场文书
开展党的群众路线教育实践活动领导班子对照检查材料
2014/09/25 职场文书
2014年加油站工作总结
2014/12/04 职场文书
小学生作文批改评语
2014/12/25 职场文书
《珍珠鸟》教学反思
2016/02/16 职场文书
关于感恩的歌曲整理(8首)
2019/08/14 职场文书
公司财务制度:成本管理控制制度模板
2019/11/19 职场文书