java验证身份证号码的合格性

article/2025/9/28 10:05:07

中国居民身份证校验码算法步骤如下:

  1. 将身份证号码前面的17位数分别乘以不同的系数。从第一位到第十七位的系数分别为:
    7-9-10-5-8-4-2-1-6-3-7-9-10-5-8-4-2。
  2. 将这17位数字和系数相乘的结果相加。
  3. 用加出来和除以11,取余数。
  4. 余数只可能有
    0-1-2-3-4-5-6-7-8-9-10这11个数字。其分别对应的最后一位身份证的号码为
    1-0-X-9-8-7-6-5-4-3-2。
  5. 通过上面计算得知如果余数是3,第18位的校验码就是9。如果余数是2那么对应的校验码就是X,X实际是罗马数字10。

       例如:某男性的身份证号码为【53010219200508011X】, 我们看看这个身份证是不是合法的身份证。首先我们得出前17位的乘积和【(5*7)+(3*9)+(0*10)+(1*5)+(0*8)+(2*4)+(1*2)+(9*1)+(2*6)+(0*3)+(0*7)+(5*9)+(0*10)+(8*5)+(0*8)+(1*4)+(1*2)】是189,然后用189除以11得出的结果是189/11=17----2,也就是说其余数是2。最后通过对应规则就可以知道余数2对应的检验码是X。所以,可以判定这是一个合格的身份证号码。

public class IdCardDemo {public void IdCard(String str) {//创建数组arr[]存放17位系数int arr[] = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};//创建数组arrCheck[]存放校验码,元素对应余数为数组下标,88为大写'X'字符的ASCII码int arrCheck[] = {1, 0, 88, 9, 8, 7, 6, 5, 4, 3, 2};//计算身份证前17位与17位系数乘积的总和int sum = 0;for (int i = 0; i < arr.length; i++) {char c = str.charAt(i);int a = c - 48;sum += a * arr[i];}//身份证为X结尾if (str.charAt(17) == 88) {//总和sum对11取余后通过数组arrCheck[]校验if (arrCheck[sum % 11] == 88)System.out.println("这是一个合格的身份证号码");elseSystem.out.println("这是一个虚假的身份证号码");}//身份证为阿拉伯数字结尾else {//将身份证最后一位数字字符转换为int型char c = str.charAt(17);//总和sum对11取余后通过数组arrCheck[]校验if (arrCheck[sum % 11] == c - 48)System.out.println("这是一个合格的身份证号码");elseSystem.out.println("这是一个虚假的身份证号码");}}public static void main(String[] args) {//X结尾的身份证此处必须写为大写'X'String idCard = "53010219200508011X";new IdCardDemo().IdCard(idCard);}
}

运行结果:


http://chatgpt.dhexx.cn/article/FuWqSXuD.shtml

相关文章

Python+Opencv身份证号码区域提取及识别

前端时间智能信息处理实训&#xff0c;我选择的课题为身份证号码识别&#xff0c;对中华人民共和国公民身份证进行识别&#xff0c;提取并识别其中的身份证号码&#xff0c;将身份证号码识别为字符串的形式输出。现在实训结束了将代码发布出来供大家参考&#xff0c;识别的方式…

身份证号码案例

我国的居民身份证号码&#xff0c;由由十七位数字本体码和一位数字校验码组成。请定义方法判断用户输入的身份证号码是否合法&#xff0c;并在主方法中调用方法测试结果。规则为&#xff1a;号码为18位&#xff0c;不能以数字0开头&#xff0c;前17位只可以是数字&#xff0c;最…

Python之身份证号码的校验

该文章已同步收录到我的博客网站&#xff0c;欢迎浏览我的博客网站&#xff0c;xhang’s blog 问题描述&#xff1a; 中华人民共和国居民身份证号码由17 位数字和1位校验码组成。 其中&#xff0c;前6位为所在地编号&#xff0c;第7~14 位为出生年月日&#xff0c;第15~17位为登…

JAVA 身份证号码的验证

一、身份证结构和形式 在通用的身份证号码有15位的和18位的&#xff1b; 15位身份证号码各位的含义: 1、1-2位省、自治区、直辖市代码&#xff1b; 2、3-4位地级市、盟、自治州代码&#xff1b; 3、5-6位县、县级市、区代码&#xff1b; 4、7-12位出生年月日,比如670401代…

等价类划分测试—身份证

目录 0.题目要求&#xff1a; 注意&#xff1a;一个测试用例只能覆盖一个无效等价类&#xff0c;但可以覆盖尽可能多的前面未覆盖到的有效等价类。 1.划分等价类 1.1有效等价类 1.2无效等价类 2.测试用例&#xff1a; 0.题目要求&#xff1a; 针对国内18位身份证号码验证…

二维码文件分析

将二维码保存&#xff0c;进行解码 进行base64解码,网址&#xff1a;https://www.sojson.com/base64.html。第一次解码&#xff1a;6LZ5Liq5bCx5piv6aqM6KB56CB77yaQkozNVVCNVNZNg 第二次解码&#xff1a;这个就是验证码&#xff1a;BJ35UB5SY6 得到key

Base64[再谈Base64] -- 附练习源代码

我打赌当你见到Base64这个词的时候你会觉得在哪里见过&#xff0c;因为在你能够上网看到这篇文章的时候你已经在后台使用它了。如果您对二进制数有所了解&#xff0c;你就可以开始读它了。 打开一封Email&#xff0c;查看其原始信息&#xff08;您可以通过收取、导出该邮件用文…

KgoUI(3) 之 vue + Sass

框架源代码&#xff1a;码云 直接上步骤&#xff1a; 第一&#xff1a;sass需要的模块 &#xff08;没有安装cnpm 就用 npm咯&#xff09; cnpm install --save-dev sass-loader cnpm install --save-dev node-sass cnpm install --save-dev sass-resources-loader…

安卓项目实战之强大的网络请求框架okGo使用详解(四):Cookie的管理

Cookie概念相关 具体来说cookie机制采用的是在客户端保持状态的方案&#xff0c;而session机制采用的是在服务器端保持状态的方案。同时我们也看到&#xff0c;由于采用服务器端保持状态的方案在客户端也需要保存一个标识&#xff0c;所以session机制是需要借助于cookie机制来…

Windows下安装Ginkgo测试框架

终端执行命令 #切换至GO安装路径 cd F:\Go\goProject\src\github.com F:#安装Ginkgo及其附加库 go get github.com/onsi/ginkgo/ginkgo go get github.com/onsi/gomega结果安装其附加库时开始报错 package golang.org/x/net/html/charset: unrecognized import path "g…

HTTPSConnectionPool(host=‘files.pythonhosted.org‘, port=443): Read timed out.

python 下载第三方库的时候一直报错怎么办&#xff0c; pip --default-timeout1000 install -U pip 尝试了延时操作依然不行&#xff0c;不能获取 这种情况有可能是你开了VPN或者是其他的软件&#xff0c;退出下载即可

Go:构建应用程序的10大框架

文章目录 简介一、CLI 命令(spf13/cobra)二、配置读取器(spf13/viper)三、Web 框架(labstack/echo)四、依赖注入(uber-go/fx)五、Swagger Generator, UI 和 Validation1. Swagger generator (swaggo/swag)2. Swagger UI (swaggo/echo-swagger)3. Swagger validation (go-swagge…

KgoUI(2) 之 vue + layui

框架源代码&#xff1a;码云 我接触layui 已经快2年多了&#xff08;Layui刚出的时候我就开始关注了&#xff09;&#xff0c;vue 和 layui并不是天生一对&#xff0c;elementui 和vue配合更加亲密无间。我认为layui的弹层layer是当前前端最好的弹层。 这里依旧选择layu…

2021年全国大学生网络安全邀请赛暨第七届“东华杯“上海市大学生网络安全大赛Writeup

2021年全国大学生网络安全邀请赛暨第七届"东华杯"上海市大学网格全大赛Writeup Misc checkin 题目给了AGYAbABhAGcAewBkAGgAYgBfADcAdABoAH0- 是UTF-7编码&#xff0c;解码得到flag flag为&#xff1a; flag{dhb_7th}project 下载附件&#xff0c;解压之后发现这…

玩转Kafka—SpringGo整合Kafka

玩转Kafka—Spring整合Kafka 1 新建Spring Boot项目&#xff0c;增加依赖 <dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependenc…

视图单行子查询返回mysql,Oracle命令整理 - osc_sj1kgo4z的个人空间 - OSCHINA - 中文开源技术交流社区...

常用命令 1 sqlplus scott/tiger192.168.47.10:1521/orcl后面不要加&#xff1b; sqlplus sys/oracle as sysdba 【密码认证】 sqlplus用户名任意/密码任意as sysdba 【主机认证】 2 spool d:\基本查询.txt 录屏开始 spool off …

MLX90316KGO-BDG-100-RE传感器 旋转位置 角度测量

介绍 MLX90316是Tria⊗is旋转位置传感器&#xff0c;提供在设备表面旋转的小偶极磁铁(轴端磁铁)的绝对角位置。 得益于其表面的集成磁集中器(IMC)&#xff0c;单片设备以非接触式方式感知应用磁通量密度的水平分量。 这种独特的传感原理应用于旋转位置传感器&#xff0c;可在机…

图形语言 Kgo

http://www.ferlysoft.com/product-kgo.asp 始于2008 无代码开发技术&#xff0c;以图形取代编程 Kgo 介绍Kgo是无代码开发管理信息系统的特定领域语言。 Kgo语言由语法语义、图形设计云工具和运行时环境三个部分构成。Kgo 语法语义采用XSD&#xff08;XML Schemas Definition&…

KgoUI 页面展示

前端框架 vue layui sass 框架源代码&#xff1a;码云