java后台证件号15转18位
最近做一个小项目,涉及到证件号码的校验,虽然目前基本没有15位证件号码,但是项目要求还是需要把15位转18位的问题校验。
原始代码中,有关于15位转18位和18转15位校验的。 本次只涉及15转18位校验。
public class ConvertCard {final static int[] wi = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1}; static int[] vi = {1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2}; private static int[] ai = new int[18]; // 验证15位18位 public static boolean Verify(String idcard) { if (idcard.length() == 15) {idcard = uptoeighteen(idcard); } if (idcard.length() != 18) { return false; } String verify = idcard.substring(17, 18); if (verify.equals(getVerify(idcard))) { return true; } return false; }// 得到最后地位校验码 public static String getVerify(String eightcardid) { int remaining = 0; if (eightcardid.length() == 18) { eightcardid = eightcardid.substring(0, 17); } if (eightcardid.length() == 17) { int sum = 0; for (int i = 0; i < 17; i++) { String k = eightcardid.substring(i, i + 1); ai[i] = Integer.parseInt(k); } for (int i = 0; i < 17; i++) { sum = sum + wi[i] * (ai[i]); } remaining = sum % 11; } return remaining == 2 ? "X" : String.valueOf(vi[remaining]); } // 15转18位 public static String uptoeighteen(String fifteencardid) { String eightcardid = fifteencardid.substring(0, 6); eightcardid = eightcardid + "19"; eightcardid = eightcardid + fifteencardid.substring(6, 15); eightcardid = eightcardid + getVerify(eightcardid); return eightcardid;} public static void main(String[] args){ System.out.println(Verify("360829860812171")); } }
java后台证件号15转18位相关推荐
- Java:15位或18位居民身份证号码通用校验(正则表达式、日期格式、末尾校验码)
身份证号码校验,正则表达式校验.日期格式校验.18位身份证末尾校验码校验 前六位省市县号码变更频繁,这里就不做校验 import java.text.ParseException; import ja ...
- 身份证验证信息15位或18位
一.身份证号码的结构和表示形式 1.号码的结构 根据[中华人民共和国国家标准GB11643-1999]中有关公民身份号码的规定,公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成.排列顺序从 ...
- js根据15,18位身份证号获取生日与性别
15位身份证号:第6.7位为年份,8.9位为月份,10.11为日.最后一位为性别,男为奇数,女为偶数. 18位身份证号:第6.7.8.9位为年份,10.11位为月份,12.13为日.最后一位为性别, ...
- 15位与18位身份证号码有什么区别和联系
522529198802252219 身份证号码:共18位组成 1-3位为省级行政区代码 4-6位为市.县级行政区代码 7-10位为出生身年份 11-12位为出生身月份 13-14位为出生身 ...
- java:正则表达式匹配IMEI(15或17位)
国际移动设备识别码(International Mobile Equipment Identity,IMEI),即通常所说的手机序列号.手机"串号",用于在移动电话网络中识别每一部 ...
- 15位或18位身份证验证
c#实现的18位身份证格式验证算法 18位身份证标准在国家质量技术监督局于1999年7月1日实施的GB11643-1999<公民身份号码>中做了明确的规定. GB11643-1999< ...
- Oracle 通过15位或18位身份证号码计算年龄、出生年月日、性别
15位身份证号码各位的含义: 地址码(前六位数):表示身份证编码对象常住户口所在省份.地市,以及县(市.旗.区)的行政区划代码,1-2位数字表示所在地省.自治区.直辖市代码,第3.4位数字表示所在地地 ...
- 15或18位身份证号码增强校验
1. 背景简介 目前部分项目用到了增强的身份证号码验证,要验证15位.18位.行政区划.日期合法性.校验位(仅对18位)等特点. 当前i产品仅提供一个函数idcheck可以用来验证身份证合法性,用法为 ...
- 15位或18位长度身份证号码JS验证
免责声明:身份证号为随机组合而成,不会涉及任何隐私泄密问题,也非现实生活中真实的身份证号码:身份证号码所属年龄均为18岁以上,均已通过校验. var IdNum1 = "3205831986 ...
最新文章
- 想快速入门NLP?我们测评了15门最火课程,帮你找到最适合的
- Lucene教程具体解释
- python web-2019年Python Web五大主流框架
- xml 名称中不能包含= 字符_可扩展标记语言:XML
- Java DataOutputStream writeByte()方法与示例
- python复利计算函数_PyThon编程入门:了解python format格式化函数的使用
- python 邻接矩阵_阿里巴巴举荐,Python视频,免费分享,用python求解特征向量和拉普拉斯矩阵...
- android 之手机拨号器,以及短信发送器的简单实现
- 【生活中的逻辑谬误】功利误导和情感误导
- 2021-2027全球与中国医疗废物容器市场现状及未来发展趋势
- 共享鸡皮疙瘩?庆应大学开发了一种贴身设备,利用腕带和颈带数据,分享刺激感受...
- Vue属性书写顺序推荐:
- CMD的打开方式以及一些常用的Dos命令
- java-清楚明了的集合
- 自然语言处理(NLP)之路——概念理解——从 Google translate 的 seq2seq 看自然语言处理(NLP)的发展
- macbook系统占用硬盘大_解决macos双系统情况下重制macos系统导致windows系统盘一直占用的情况...
- 解决方案之Android 国际化资源完美兼容6.0,7.0,8.0
- AStar 拐点 算法实现AI寻路
- 垂直水平居中的几种实现方式
- 计算机网络技术基础篇