java实现的18位身份证格式验证算法-Java基础-Java-编程开发

USB3.0/3.1信号完整性分析仿真 • 1.了解USB3.0通路的互连关系,解读原理图接口电路和PCB的互连电路。对USB布线的通路及阻抗进行检查和分析。 • 2.使用USB3.0实例文件提取互连线的S参数,选择SSRX+,SSRX-,SSTX+,SSTX-,D+,D-组的互连线,使用PowerSI,Clarity,3DFEM等工具提起关键网络的S参数。提取S参数以后需要分析S参数的互连特征,对S参数的结果开展评价。 • 3.使用SYSTEM SI USB3 Compliance工程向导模型,建立USB仿真实例框架,在框架BOLCK中带入S参 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script>

公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。
1、地址码
表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按 GB/T 2260 的规定执行。
2、出生日期码
表示编码对象出生的年、月、日,按 GB/T 7408 的规定执行。年、月、日代码之间不用分隔符。
例:某人出生日期为 1966年10月26日,其出生日期码为 19661026。
3、顺序码
表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数千分配给女性。
4 、校验码
校验码采用ISO 7064:1983,MOD 11-2 校验码系统。
(1)十七位数字本体码加权求和公式
S = Sum(Ai * Wi), i = 0, ... , 16 ,先对前17位数字的权求和
Ai:表示第i位置上的身份证号码数字值
Wi:表示第i位置上的加权因子
Wi: 7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2
(2)计算模
Y = mod(S, 11)
(3)通过模得到对应的校验码
Y: 0 1 2 3 4 5 6 7 8 9 10
校验码: 1 0 X 9 8 7 6 5 4 3 2
下面是java实现的代码

/*
* IDCard.java Created on 2004-11-5 17:03:37
*
*/
package org.yz21.study.idcard;
/**
* @author violin 2004-11-5 17:03:37
* Copyright www.yz21.org 2003-2004
*/
public class IDCard {
// wi =2(n-1)(mod 11)
final int[] wi = {7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2,1};
// verify digit
final int[] vi = {1,0,'X',9,8,7,6,5,4,3,2};
private int[] ai = new int[18];
public IDCard() {
}
//verify
public 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;
}
//get verify
public 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 = Integer.parseInt(k);
}
for (int i = 0; i < 17; i ) {
sum = sum wi * ai;
}
remaining = sum % 11;
}
return remaining == 2 ? "X" : String.valueOf(vi[remaining]);
}
//15 update to 18
public 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;
}
}

测试代码:
使用的单元测试工具是junit

/*
* IDCardTest.java Created on 2004-11-5 17:32:12
*
*/
package org.yz21.study.idcard;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
/**
* @author violin 2004-11-5 17:32:12
* Copyright www.yz21.org 2003-2004
*/
public class IDCardTest extends TestCase {
private String idcard1 = "11010519491231002X";
private String idcard2 = "440524188001010014";
public void testVerify() {
IDCard idcard = new IDCard();
this.assertTrue(idcard.Verify(idcard1));
this.assertTrue(idcard.Verify(idcard2));
}
public static Test suite() {
return new TestSuite(IDCardTest.class);
}
public static void main(String[] args) {
junit.textui.TestRunner.run(suite());
}
}

【低空经济】多源异构数据融合的低空智能感知系统设计与实现 本文探讨了低空智能感知系统在多源异构数据融合中的设计与实现,重点解决无人机等低空飞行器的安全监测问题。通过雷达、光学和红外传感器的数据融合,系统识别准确率提升至92%,并实现120ms的低延迟处理。文章详细介绍了时空对齐、特征级融合和动态权重自适应等关键技术,为低空经济发展提供可靠技术支持。 阅读详情

相关推荐

Librepilot _64位window10环境下的搭建及一些坑的解决办法

  刚入IT行业的小菜鸟,在window上折腾了四天的librepilot地面控制站的搭建,想着这么辛苦不能白费了,看网上相关资料少得可怜,唯一一个详细教程还是在32位环境下,一大堆坑,所以把自己的经验写下来,供大家一起参考。 参考的原文是:https://www.cnblogs.com/jasonchan1202/p/7809937.html的博客,但是执行下来才发现这个博客对64位系统极其不...

weixin_41426339的博客 2728

java字符串应用之18位身份证格式验证

    公民身份号码是特征组合码,由17位数字本体码和1位数字校验码组成。排列顺序从左至右依次为:6位数字地址码、8位数字出生日期码,3位数字顺序码和1位数字校验码。    地址码:表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按 GB/T 2260的规定执行。    出生日期码:表示编码对象的出生年、月、日,按GB/T 7408的规定执行。    顺序码:表示在同一地址码所标识的区域范

上善若水 3888

STM32F1的USB接口-自定义HID

设置USB VID:1155 PID :22352。

chilian12321的博客 839

java实现的18位身份证格式验证算法

身份证验证规则1、号码的结构    公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。    2、地址码    表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按GB/T2260的规定执行。    3、出生日期码    表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、

Jason Hm 3302

手把手教你用Zemax优化MTF:从‘离焦平衡球差’到高频像差控制的实战技巧

本文详细介绍了如何使用Zemax优化MTF性能,从基础设置到高级技巧的全流程。通过具体案例,讲解了如何利用离焦平衡球差提升中频MTF,以及识别和控制高频像差的方法,帮助光学设计工程师和学生有效提升成像质量。

weixin_30752699的博客 752

opencv实现“找茬”

// 111.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include #include #include using namespace std; #define CVX_RED CV_RGB(0xff,0x00,0x00) #define CVX_BLUE CV_RGB(0x00,0x00,0xff)//定义宏,轮廓边框颜色 in

yanHa007的专栏 2095

根据身份证前17位分析(java)

/** * 身份证号码分析 * @author Administrator * */ public class IdCard { public static void main(String[] args) { String idcard = "61011519950221476"; // if(idcard.length() != 17) {

lvyinxiazheyang的博客 1083

【保研面试】线性代数面试复习

线性相关和无关 有向量组A,a1,a2…an , 如果存在不是全为0的k1,k2…kn,满足 a1 * k1 + a2 * k2… an * kn = 0 则向量组A称为线性相关(可以跟向量组A共面联系,即可以通过几个向量,表示出另外几个向量,故称为线性相关) 极大线性无关组 设有向量组A a1,a2…an(本身为线性相关) :若选出r个向量,满足以下条件 (1)向量组 r : 线性无关; (2) 向量组A中任意r+1个向量(若有的话)都线性相关, 则向量组r 是向量组A的一个极大线性无关组(简称为

云端筑梦师 6311

【身份证】java 校验15位或18位身份证号码

import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import java.util.HashMap; import java.util.Map; 公共类 ValidateIdCardUtil { 最终静态 Map &lt;Integer,String&gt; ...

wjx_jasin的博客 5264

材料力学小白必看:纯弯曲正应力计算全解析(附实例演示)

本文详细解析了材料力学中纯弯曲正应力的计算原理与工程应用,通过实例演示帮助初学者掌握关键公式和计算流程。内容涵盖纯弯曲的基本假设、正应力分布规律、截面特性计算,以及现代工具如Excel、ANSYS和Python在应力分析中的应用,特别适合材料力学小白系统学习。

sea99的博客 1233

71、聚二甲基硅氧烷(PDMS)材料模型验证研究

本研究通过实验与数值模拟相结合的方法,系统探究了聚二甲基硅氧烷(PDMS)的力学性能与粘附行为。重点验证了多种超弹性材料模型在不同剥离速率下的适用性,结果表明Ogden N2模型在预测界面韧性和平均剥离力方面误差最小,表现最优。研究涵盖了PDMS的合成、单轴拉伸试验、剥离测试及有限元分析,为PDMS在机械与摩擦学领域的应用提供了可靠的建模依据,并建议在后续模拟中优先采用Ogden模型。

wine的专栏 1058

Java中身份证号码工具类--Java自学网

package com.util; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; /**  * 身份证号码工具  * @author Administrator  *  */ public class IdentityCardUtils{  /**

471

STM32入门教程:无人机控制

我们将会一步一步引导您完成无人机的控制代码,包括无人机的姿态控制、飞行控制和通信控制等。第三步:配置无人机姿态控制 无人机的姿态控制是指控制无人机在空中的倾斜和转向。为了实现姿态控制,我们需要使用加速度计和陀螺仪传感器来获取无人机的姿态信息,并使用PID控制算法来控制无人机的姿态。在这一步骤中,您需要根据您使用的具体传感器和控制算法的要求进行更详细的配置和编码。在通信控制中,您需要考虑到通信的稳定性和可靠性。第五步:通信控制 无人机的通信控制是指与地面站或其他设备进行通信,传输飞行数据和接收飞行指令。

m0_75244442的博客 748

JAVA 身份证号码的验证

Java居民身份证号校验规则,获取身份证号码的生日,性别,校验身份证号格式是否正常。

枫 1万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

java身份证工具类(校验身份证是否合法、通过身份证获取年龄、性别、生日,将15位身份证转为18位等)

一、简介 因为工作需要经常用到身份证做一些相关操作,于是通过查阅资料总结出一些常用的工具方法,包括校验身份证是否合法、通过身份证获取年龄、通过身份证获取性别、通过身份证获取户籍地址、通过身份证获取生日、将15位身份证转为18位身份证等。

zjx2016的博客 9351

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Java 身份证校验工具类(15位校验、18位校验与15转18)

身份证校验是指通过一定规则和算法对身份证号码进行真实性核验的过程,主要是为了确保个人身份信息的准确性和安全性。

梁辰兴的博客 2268

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

【分享】JAVA 身份证验证18位和15位号码,工具类

package org.lyz.utils; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.GregorianCalendar; import java.util.Hashtable; import java.util...

bug_love的博客 1036

Java实现蓝桥杯 算法提高 身份证号码升级

算法提高 身份证号码升级 时间限制:1.0s 内存限制:256.0MB 问题描述   从1999年10月1日开始,公民身份证号码由15位数字增至18位。(18位身份证号码简介)。升级方法为:   1、把15位身份证号码中的年份由2位(7,8位)改为四位。   2、最后添加一位验证码。验证码的计算方案:   将前 17 位分别乘以对应系数 (7 9 10 5 8 4 2 1 6 3 7 9 10...

南 墙 1万+

java 验证18位數字_java实现的18位×××格式验证算法

java实现的18位×××格式验证算法公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成.排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。1、地址码表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按GB/T2260的规定执行。2、出生日期码表示编码对象出生的年、月、日,按GB/T7408的规定执行。年、月、日代码之间不用分隔符。例:...

weixin_31319319的博客 831

ValidX 中国身份证号验证完全指南:从15位到18位的技术实现ValidX

身份证号验证是中国业务系统中最常见的需求之一。然而,很多开发者对身份证号的规则和校验算法并不完全了解,导致验证不够严谨,甚至出现漏洞。 本文将深入解析中国身份证号的完整规则,并展示ValidX如何帮你一行代码搞定这个复杂的验证逻辑。

vipxieliang的博客 3万+

java验证身份证号码是否正确。(带校验算法)

验证身份证号码是否正确。(带校验算法)题目代码 题目 题目内容: 输入一个字符串,请判断是否满足身份证基本要求,并返回具体的生日yyyy-mm-dd。如果输入数据有误,请输出0000-00-00。基本要求是:a)必须是18位;b) 前面位数必须是数字,最后一位可以是数字或小写字母;c) 日期是存在的;d)最后一位校验码检查。 校验码规则如下: 1、将前面的身份证号码17位数分别乘以不同的系数。从第...

qq_38971856的博客 9765

java,javascript对18位身份证格式的验证算法

参考资料  1 java实现的18位身份证格式验证算法  http://fanqiang.chinaunix.net/program/java/2006-06-22/4639.shtml  原码中有少许错误,我已经调整过来了  2 身份证效验规则,经典  http://since2006.com/blog/176  公民身份号码是特征组合码,由十七位数字本体码和一位数字校验码组成.排列

Dream It Possible 2996

大陆身份证号码格式校验

目录 我国身份证号码的构成规则 1.18位身份证号码 2.15位身份证号码 正则表达式 1. 18位身份证号码正则 2. 15位身份证号码正则 3.平年日期正则 4.闰年日期正则 18位身份证的校验算法 18位身份证号码的校验码数组: 校验代码 我国身份证号码的构成规则 1.18位身份证号码 第1~2位数字:所在省(直辖市、自治区)的代码; 第3~4位:所在地级...

someby的博客 4851

java身份证验证

直接用即可 import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * <p> ...

点点滴滴 647
上一篇: 详细解析抽象类和接口的区别-Java基础-Java-编程开发
下一篇: JAVA操作数据库方式与设计模式应用-Java基础-Java-编程开发
java169
博客等级 码龄18年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值