Java实现18位身份证号码的校验码计算校验
我国第二代公民身份号码是特征组合码,由前十七位数字本体码和最后一位数字校验码组成。排列顺序从左至右依次为六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。本文只介绍最后一位数字校验码的计算校验。
校验码算法
将本体码各位数字乘以对应加权因子并求和,除以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位身份证号码的校验码计算校验相关推荐
- 比较严谨的java验证18位身份证号码
/** * 我国公民的身份证号码特点如下* 1.长度18位* 2.第1-17号只能为数字* 3.第18位只能是数字或者x* 4.第7-14位表示特有人的年月日信息* 请实现身份证号码合法性判断的函数, ...
- JS 校验18位身份证号码正确性,出生年月日校验,校验码判断
//校验身份证号码正确性function testId(id) {var format = /^(([1][1-5])|([2][1-3])|([3][1-7])|([4][1-6])|([5][0- ...
- 关于18位身份证号码最后一位计算(Java实现)
关于18位身份证号码最后一位计算(Java实现) 现代的身份证号码长度都是18位的,但是只要知道前17位便可推出第18位数字或者字母(第18位为0,1,...,9和X中的一个).也就是说,国内不存在前 ...
- 18位身份证号码最后一位校验码的计算方法
介绍18位身份证号码最后一位校验码的计算方法 公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码. ...
- 15/18位身份证号码验证
15/18位身份证号码验证 在做身份证验证之前你得明确身份证号的组成. 首先我告诉你,18位身份证号码后面的字母只有"X"这一个.(X是罗马数字的10,用X来代替10,可以保证您的 ...
- 15/18位身份证号码验证的正则表达式总结(详细版)
前言 开发过程中,常常需要对一些输入信息进行有效性验证,使用正则表达式进行校验是最简单.效率最高的方式了,下面就来看看15/18位身份证号码验证的正则表达式吧. 介绍 xxxxxx yyyy MM d ...
- 18位身份证号码规则及js验证
2019独角兽企业重金招聘Python工程师标准>>> 一.中国居民身份证号码规则 18位身份证号码编码规则:根据[中华人民共和国国家标准 GB 11643-1999]中有关公民身份 ...
- MySQL正则表达式判断身份证_15/18位身份证号码验证的正则表达式总结(详细版)...
前言 开发过程中,常常需要对一些输入信息进行有效性验证,使用正则表达式进行校验是最简单.效率最高的方式了,下面就来看看15/18位身份证号码验证的正则表达式吧. 介绍 xxxxxx yyyy MM d ...
- 15位、18位身份证号码正则表达式
身份证正则表达式 在项目中遇到身份证号码验证,百度了一些资料,太简单的和太复杂的pass,综合了一些案例,取长补短,形成了个折中版本的,正则表达式如下: var reg =/(^[1-9]\d{5}( ...
- Oracle 通过15位或18位身份证号码计算年龄、出生年月日、性别
15位身份证号码各位的含义: 地址码(前六位数):表示身份证编码对象常住户口所在省份.地市,以及县(市.旗.区)的行政区划代码,1-2位数字表示所在地省.自治区.直辖市代码,第3.4位数字表示所在地地 ...
最新文章
- mobile还有人用吗 spring_话说,苹果手机语音备忘录功能还有人用吗?
- Webservice超时问题
- 精通python设计模式-精通Python设计模式
- MYSQL:HAVING
- 这7本O’Reilly推出的免费Python电子书,够你看了
- Spring包的依赖关系以及提供下载
- 使用Boostrap,左侧菜单栏固定宽度,右侧自适应宽度。
- Mac 10.12安装Google浏览器
- PHP+jQuery.photoClip.js支持手势的图片裁剪上传实例
- bing翻译接口appID申请教程【TranslateApiException: AppId is over the quota 】
- Window: win10 点击打开此电脑中的磁盘时,提示找不到应用程序
- 软件开发的8大主流方法介绍
- BFS和DFS搜索汇总(未完待续)
- 树莓派4+神经计算棒二代开发-环境搭建
- 重磅:国家基金委八大学部公布“优先发展领域及主要研究方向”
- 2021年个人工作总结
- jquery插件整理篇(二)消息提示类jquery插件
- 【小程序源码】经典语录大全多种分类语录
- 浅谈Warshall算法
- DHCP租约过程,如何使用DHCP