我国第二代公民身份号码是特征组合码,由前十七位数字本体码和最后一位数字校验码组成。排列顺序从左至右依次为六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。本文只介绍最后一位数字校验码的计算校验

校验码算法

将本体码各位数字乘以对应加权因子并求和,除以11得到余数,根据余数通过校验码对照表查得校验码。

加权因子:

校验码:

算法举例:

本体码为:11010519491231002

第一步: 各位数与对应加权因子乘积求和1*7+1*9+0*10+1*5+***=167

第二步:对求和进行除11得余数167%11=2

第三步:根据余数2对照校验码得X

因此完整身份证号为:11010519491231002X

代码实现

由校验码算法,我自己写了以下代码

public class TimTest {// Java实现18位身份证号码的校验码计算校验public static void main(String[] args) {// 从百度百科中找到的身份证号码例子String idCard = "53010219200508011X";System.out.println(idCardVerify(idCard) ? "身份证号码校验通过" : "身份证号码不合法");}static boolean idCardVerify(String idCard) {// 仅适用于18位标准身份证号码if (idCard.length() != 18) {return false;}// 使身份证号码中的字母升大写idCard = idCard.toUpperCase();char[] idCardChars = idCard.toCharArray();// 重点1:加权因子计算final int[] factors = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};int sumFactor = 0;for (int i = 0; i < factors.length; i++) {// 数字的ASCII码是48-57int value = idCardChars[i] - 48;// 纯数字校验if (value < 0 || value > 9) {return false;}sumFactor += factors[i] * value;}// 重点2:校验码比对final char[] verifyCode = {'1', '0', 'X', '9', '8', '7', '6', '5', '4', '3', '2'};// author: tiange1314520@qq.comreturn idCardChars[17] == verifyCode[sumFactor % 11];}}

创作不易,觉得有用请给我点个赞吧!

参考链接:http://www.woshipm.com/pmd/350196.html

Java实现18位身份证号码的校验码计算校验相关推荐

  1. 比较严谨的java验证18位身份证号码

    /** * 我国公民的身份证号码特点如下* 1.长度18位* 2.第1-17号只能为数字* 3.第18位只能是数字或者x* 4.第7-14位表示特有人的年月日信息* 请实现身份证号码合法性判断的函数, ...

  2. JS 校验18位身份证号码正确性,出生年月日校验,校验码判断

    //校验身份证号码正确性function testId(id) {var format = /^(([1][1-5])|([2][1-3])|([3][1-7])|([4][1-6])|([5][0- ...

  3. 关于18位身份证号码最后一位计算(Java实现)

    关于18位身份证号码最后一位计算(Java实现) 现代的身份证号码长度都是18位的,但是只要知道前17位便可推出第18位数字或者字母(第18位为0,1,...,9和X中的一个).也就是说,国内不存在前 ...

  4. 18位身份证号码最后一位校验码的计算方法

    介绍18位身份证号码最后一位校验码的计算方法 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码. ...

  5. 15/18位身份证号码验证

    15/18位身份证号码验证 在做身份证验证之前你得明确身份证号的组成. 首先我告诉你,18位身份证号码后面的字母只有"X"这一个.(X是罗马数字的10,用X来代替10,可以保证您的 ...

  6. 15/18位身份证号码验证的正则表达式总结(详细版)

    前言 开发过程中,常常需要对一些输入信息进行有效性验证,使用正则表达式进行校验是最简单.效率最高的方式了,下面就来看看15/18位身份证号码验证的正则表达式吧. 介绍 xxxxxx yyyy MM d ...

  7. 18位身份证号码规则及js验证

    2019独角兽企业重金招聘Python工程师标准>>> 一.中国居民身份证号码规则 18位身份证号码编码规则:根据[中华人民共和国国家标准 GB 11643-1999]中有关公民身份 ...

  8. MySQL正则表达式判断身份证_15/18位身份证号码验证的正则表达式总结(详细版)...

    前言 开发过程中,常常需要对一些输入信息进行有效性验证,使用正则表达式进行校验是最简单.效率最高的方式了,下面就来看看15/18位身份证号码验证的正则表达式吧. 介绍 xxxxxx yyyy MM d ...

  9. 15位、18位身份证号码正则表达式

    身份证正则表达式 在项目中遇到身份证号码验证,百度了一些资料,太简单的和太复杂的pass,综合了一些案例,取长补短,形成了个折中版本的,正则表达式如下: var reg =/(^[1-9]\d{5}( ...

  10. Oracle 通过15位或18位身份证号码计算年龄、出生年月日、性别

    15位身份证号码各位的含义: 地址码(前六位数):表示身份证编码对象常住户口所在省份.地市,以及县(市.旗.区)的行政区划代码,1-2位数字表示所在地省.自治区.直辖市代码,第3.4位数字表示所在地地 ...

最新文章

  1. mobile还有人用吗 spring_话说,苹果手机语音备忘录功能还有人用吗?
  2. Webservice超时问题
  3. 精通python设计模式-精通Python设计模式
  4. MYSQL:HAVING
  5. 这7本O’Reilly推出的免费Python电子书,够你看了
  6. Spring包的依赖关系以及提供下载
  7. 使用Boostrap,左侧菜单栏固定宽度,右侧自适应宽度。
  8. Mac 10.12安装Google浏览器
  9. PHP+jQuery.photoClip.js支持手势的图片裁剪上传实例
  10. bing翻译接口appID申请教程【TranslateApiException: AppId is over the quota 】
  11. Window: win10 点击打开此电脑中的磁盘时,提示找不到应用程序
  12. 软件开发的8大主流方法介绍
  13. BFS和DFS搜索汇总(未完待续)
  14. 树莓派4+神经计算棒二代开发-环境搭建
  15. 重磅:国家基金委八大学部公布“优先发展领域及主要研究方向”
  16. 2021年个人工作总结
  17. jquery插件整理篇(二)消息提示类jquery插件
  18. 【小程序源码】经典语录大全多种分类语录
  19. 浅谈Warshall算法
  20. DHCP租约过程,如何使用DHCP

热门文章

  1. JanusGraph学习手册
  2. php+ddos原理,PHP DDos的几个防御方法详解_PHP教程
  3. 勤哲web配置教程_勤哲excel服务器安装与使用
  4. 如何虚拟打印PDF文件(Win7)
  5. IE兼容性问题解决方案
  6. 计算机二级--java篇
  7. 基于OMAPL138 + Xilinx spartan6的电力数据采集与传输设计
  8. Windows内核编程(五)-驱动的调试
  9. IBM ThinkPad SL400 XP驱动
  10. Modelsim缺失库快速添加