C#验证二代身份证号码

C#验证二代身份证号码身份证号码的验证及15位升18位算法18位身份证标准在国家质量技术监督局于1999年7月1日实施的GB11643-1999《公民身份号码》中做了明确的规定。GB11643-1999《公民身份号码》为GB11643-1989《社会保障号码》的修订版,其中指出将原标准名称”社会保障号码”更名为”公民身份号码”,另外GB11643-1999《公民身份号码》从实施之日起代替GB11643-1989。

大家好,又见面了,我是你们的朋友全栈君。

身份证号码的验证及15位升18位算法
18位身份证标准在国家质量技术监督局于1999年7月1日实施的GB11643-1999《公民身份号码》中做了明确的规定。 GB11643-1999《公民身份号码》为GB11643-1989《社会保障号码》的修订版,其中指出将原标准名称”社会保障号码”更名为”公民身份号码”,另外GB11643-1999《公民身份号码》从实施之日起代替GB11643-1989。GB11643-1999《公民身份号码》主要内容如下: 
一、范围 
     该标准规定了公民身份号码的编码对象、号码的结构和表现形式,使每个编码对象获得一个唯一的、不变的法定号码。 
二、编码对象 
     公民身份号码的编码对象是具有中华人民共和国国籍的公民。 
三、号码的结构和表示形式 
1、号码的结构 
    公民身份号码是特征组合码,由十七位数字本体码和一位校验码组成。排列顺序从左至右依次为:六位数字地址码,八位数字出生日期码,三位数字顺序码和一位数字校验码。 
2、地址码 
    表示编码对象常住户口所在县(市、旗、区)的行政区划代码,按GB/T2260的规定执行。 
3、出生日期码 
    表示编码对象出生的年、月、日,按GB/T7408的规定执行,年、月、日代码之间不用分隔符。 
4、顺序码 
     表示在同一地址码所标识的区域范围内,对同年、同月、同日出生的人编定的顺序号,顺序码的奇数分配给男性,偶数分配给女性。 
5、校验码 
(1)十七位数字本体码加权求和公式 
S = Sum(Ai * Wi),先对前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 
四、举例如下: 
北京市朝阳区: 11010519491231002X 
广东省汕头市: 440524188001010014

private bool CheckCardId(string id)        {            int[] wQuan = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };            string checkWei = "10X98765432";            string number17 = id.Substring(0, 17);            string number18 = id.Substring(17);            int sum = 0;            for (int i = 0; i < 17; i++)            {                sum = sum + Convert.ToInt32(number17[i].ToString()) * wQuan[i];            }            int mod = sum % 11;            string result = checkWei[mod].ToString();            if (number18.Equals(result, StringComparison.OrdinalIgnoreCase))            {                return true;            }            else            {                return false;            }

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/153631.html原文链接:https://javaforall.net

(0)
上一篇 2022年6月27日 上午7:36
下一篇 2022年6月27日 上午7:36


相关推荐

  • Hadoop学习目录导航

    Hadoop学习目录导航nbsp Hadoop 学习第一课 虚拟机安装 Hadoop 第二课 安装 JDK 学习 Hadoop 第三课 Hadoop 安装与配置 Hadoop 第四课 Hadoop 初始化和测试 Hadoop 学习第五课 配置 ssh 免密码登陆配置和 ssh 原理 Hadoop 学习第六课 初识 HDFS 原理 Hadoop 学习第七课 HDFS 架构原理 Hadoop 学习第八课 利用 Java 接口来操作 Hadoop

    2026年3月16日
    3
  • android之相机开发

    在android中应用相机功能,一般有两种:一种是直接调用系统相机,一种自己写的相机。我将分别演示两种方式的使用:第一种:是使用Intent跳转到系统相机,action为:android.media.action.STILL_IMAGE_CAMERA关键代码:Intent intent = new Intent(); //调用照相机 intent.setAction(

    2022年3月10日
    47
  • navicat for mysql注册码激活_navicat注册激活

    navicat for mysql注册码激活_navicat注册激活打开navicatformysql接着打开帮助,选中注册,把下面的复制上去就可以了NAVH-WK6A-DMVK-DKW3 

    2022年10月10日
    3
  • 创建构建工程的方法(待完成)

    创建构建工程的方法(待完成)

    2021年5月8日
    133
  • 使用JAVA实现邮件发送功能

    使用JAVA实现邮件发送功能使用 Java 实现邮件发送 文本邮件 单个附件邮件 多个附件邮件

    2026年3月16日
    1
  • Bootstrap5详细讲解

    Bootstrap5详细讲解文章目录 Boostrapv50 介绍 1 快速开始 2 布局容器 Boostrapv50 介绍使用 Bootstrap 构建快速 响应式布局的网站 Bootstrap 是全球最流行的前端开源工具包 它支持 Sass 变量和 mixins 响应式网格系统 大量的预建组件和强大的 JavaScript 插件 助你快速设计和自定义响应式 移动设备优先的站点 1 快速开始 DOCTYPE tml htmllang zh CN head amp l head htmllang zh CN

    2026年3月18日
    0

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号