前些日子无聊,脑里突然想到一个问题——在完成实名制的时候,当我输入一个编造的身份证号时,为什么会被识别出来是编造的嘞?
然后…我去搜索了一番,发现原来身份证号的最后一位并不是随机生成的,而是一个根据前17位的数字计算出来的校验码——也就是说,只要前17位号码已知,那么最后一个号码就可以通过复杂公式的计算得出。

于是我“处心积虑”,用JS写出了计算身份证最后一位计算的代码:
HTML部分:

<div id='box'><h3>身份证号码末位屌炸天计算器</h3><input type='text' id='num' placeholder='请输入身份证号前17位'><input type='button' id='btn' value='计算'><input type='text' id='result' disabled><br/><span class='s1'>(本页面与国家人口信息数据信息中心联网,请勿盗用!违法必揪出来乱棍打死!)</span><br/><span class='s2'>Design By 迷人小阿锴</span>
</div>

CSS部分:

    <style>html{font-size:13.3333vw;}#box{width:5.5rem;height:3rem;margin:2rem auto;border:.02rem solid black;text-align:center;border-radius:.1rem;}h3{font:.3rem/.34rem '楷体';font-weight:bold;}#num{width:2.8rem;height:.38rem;border:.01rem solid black;border-radius:.1rem;text-align:center;font:.2rem/1 'Comic Sans MS';}#btn{width:.8rem;height:.41rem;border:.01rem solid black;border-radius:.1rem;background:white;margin-left:.3rem;font:.2rem/1 '楷体';}#btn:hover{cursor:pointer;background:black;color:white;transition:.3s;;}#result{width:3.9rem;height:.38rem;border:.01rem solid black;margin-top:.04rem;border-radius:.1rem;text-align:center;font:.2rem/1 'Comic Sans MS'}.s1{font:.1rem/1 '黑体';color:red;}.s2{font:.1rem/1 '黑体';color:blue;}</style>

JS部分:

<script>var onum=document.getElementById('num');var obtn=document.getElementById('btn');var orst=document.getElementById('result');window.onload=function(){onum.value="";orst.value="";}obtn.onclick=function(){var ipt=onum.value;var reg=/^[0-9]{17}$/gif(reg.test(ipt)){var str=ipt+'0';//创建身份证号码字符串var sum=0;      //声明单位加权乘积和for(var i=0;i<str.length-1;i++){     //遍历每一位数字Aivar n=18-i;var Ai=str.charAt(i);var Wi=Math.pow(2,n-1)%11;  //位置加权公式Wi=2^(i-1)(mod11)调取每位的Wivar k=Ai*Wi;sum+=k;}var y=sum%11;       //利用Y=mod(S,11)取余公式计算校验明码var x=0;        //声明校验暗码xswitch(y){case 0:x=1;break;case 1:x=0;break;case 2:x='X';break;case 3:x=9;break;case 4:x=8;break;case 5:x=7;break;case 6:x=6;break;case 7:x=5;break;case 8:x=4;break;case 9:x=3;break;case 10:x=2;break;}orst.value=ipt+x;}else{alert('输入错误,请重新输入!')}}
</script>

成就感十足!!

利用JS函数制作身份证号末位检测器相关推荐

  1. Greenplum函数 - 身份证号15位转18位

    前几天一直有人在问,如何在Greenplum里面实现身份证号15位到18位的转换函数,今天网上搜了一下,看了看大概的逻辑,做了个简单实现,转换逻辑不懂的,请自行百度吧,这里放出函数内容,供大家使用: ...

  2. JS函数制作倒数计时器

    JS函数制作倒数计时器 <!DOCTYPE html> <html><head><meta charset="utf-8">< ...

  3. js实现根据身份证号自动生成出生日期

    <script src="http://apps.bdimg.com/libs/jquery/1.8.3/jquery.min.js"></script> ...

  4. mysql 怎么用SQL语句将老身份证号15位补位到新身份证号18位

    一.15位的身份证和18位的身份证的区别是什么? 只有15位号码的就是第一代身份证,而18位号码的则是第二代身份证.15位的身份证和18位的身份证的区别是:第二代身份证比第一代身份证增加了出生年份中的 ...

  5. js中通过身份证号判断性别(倒数第二位奇数-男,偶数-女)

    //通过身份证号,判断性别 var str2 = '110123199810103726'; var num = str2.charAt(16); //console.log(num); if(num ...

  6. 数据库SQL函数 根据身份证号/出生年月 精确计算年龄(Oracle/MySQL)

    <问题> 根据身份证号统计年龄(18位) Oracle <思路> (1)Substr()函数在Oracle使用中表示被劫取的字符串表达式,截取字符串的内容. (2)To_dat ...

  7. 手机号 ,邮箱,固定电话js验证,身份证号(正则表达式)

    固定电话: var myreg =/^((1[0-9]{10})|(((([0-9]{3}-)?[0-9]{8})|(([0-9]{4}-)?[0-9]{7}))(-[0-9]{1,4})?))$/; ...

  8. 今天写了个自定义函数验证身份证号是否符合规则

    大家好,我是老王.今天调了半天,报了各种错误,终于写好了这个验证身份证号的自定义函数,规则可以参考身份证号码的编排规则 CREATE OR REPLACE FUNCTION LAOWANG_CHECK ...

  9. js实现完美身份证号有效性验证+身份证与姓名匹配

    /* 根据[中华人民共和国国家标准 GB 11643-1999]中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成.排列顺序从左至右依次为:六位数字地址码,八位 ...

最新文章

  1. 色彩(颜色)空间原理(下)
  2. phoenixframework自动化测试平台架构图
  3. 值得收藏的 14 个 Linux 下 CPU 监控工具
  4. QT的QNetworkDiskCache类的使用
  5. 134. Gas Station加油站
  6. oracle 导库时日志满了,oracle rac 11g 日志占满系统盘导致数据库down掉
  7. java10个基础错误_我们处理了10亿个Java记录的错误-这是导致97%的错误的原因
  8. [转载] python 元组tuple - python基础入门(14)
  9. 音视频开发(39)---语音增强
  10. 传统红色纹样图案背景|中式海报必备素材
  11. PyTorch 学习笔记(六):PyTorch的十八个损失函数
  12. mysql1040_解决mysql 1040错误Too many connections的方法
  13. mysql8.0.15免安装版配置_Win10配置MySQL8.0.15免安装版教程
  14. Spark常用API(五)
  15. 遥控器控制项目(拷贝型遥控器+灵R1A)
  16. word2vec模型保存为npy文件 clh
  17. js基础——图片切换实例
  18. 28岁的他如何从运营转岗产品经理
  19. android ios mp4格式转换,ios格式转换器|iphone视频格式转换器免费版 7.1 - 系统天堂...
  20. CSS像素、物理像素、逻辑像素、设备像素比、PPI、Viewport

热门文章

  1. .\Objects\KLY_f4gc.axf: Error: L6218E: Undefined symbol HAL_PWREx_EnableOver
  2. 微信域名防封跳转系统的原理 微信域名防封的注意点
  3. 《数据分析与挖掘》期中测试题
  4. 【图像分割】基于计算机视觉实现脑肿瘤分割附matlab代码
  5. OGame的建筑说明
  6. 回归前端学习第25天-实现俄罗斯方块小游戏8(实现单机版4—设置计时、消行加分、游戏结束标志)
  7. spring boot使用AbstractRoutingDataSource实现动态数据源切换
  8. Buuctf 镜子里的世界
  9. 奥多比CS3设计套装简体中文光碟版算号器
  10. Appium+python自动化(二十四)- 白素贞千年等一回许仙 - 元素等待(超详解)