IT技术博客大学习 共学习 共进步
全部 移动开发 后端 数据库 AI 算法 安全 DevOps 前端 设计 开发者

天朝第二代身份证号码的验证机制

I am LAZY bones ? 2011-01-05 22:34:58 累计浏览 14,760 次
本机暂存

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

    就在这里给大家科普下,不知道是不是火星了,呵呵。

    以下代码来自这里,版权归盛大。当然,你也可以在维基百科找到更详细的介绍和算法。

以下是代码片段:
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; //对不上就是假号码 
}

同分类推荐文章

  1. translateZ() (2026-06-25 21:18:56)
  2. translateY() (2026-06-25 21:17:56)
  3. translateX() (2026-06-25 21:16:01)

查看更多 前端 文章 →

建议继续学习

  1. JQuery实现Excel表格呈现 (累计阅读 48,344)
  2. 深入理解Javascript之执行上下文(Execution Context) (累计阅读 18,400)
  3. 从输入 URL 到页面加载完成的过程中都发生了什么事情? (累计阅读 15,929)
  4. 图片动态局部毛玻璃模糊效果的实现 (累计阅读 14,843)
  5. HTML 5 的data-* 自定义属性 (累计阅读 14,346)
  6. 分享一个JQUERY颜色选择插件 (累计阅读 14,222)
  7. 什么是全栈工程师? (累计阅读 14,033)
  8. 快速排序(Quicksort)的Javascript实现 (累计阅读 11,731)
  9. 7 天打造前端性能监控系统 (累计阅读 11,185)
  10. 使用python/casperjs编写终极爬虫-客户端App的抓取 (累计阅读 11,099)