C# 二代身份证验证 / VerifyIDCard[通俗易懂]

C# 二代身份证验证 / VerifyIDCard[通俗易懂]由于现在社会技术的发展,需要验证身份证的合法性越发重要那么我们如何去验证一个身份证是否合法呢?我在以前的时候,特意写过一篇VB.NET查询身份证信息当然它是通过“百度身份证信息查询”的REST接口编写的一个类,当然那个时候并不考虑通过“身份证验证算法”识别身份证是否有效,注意VB.NET的主题是“查询身份证信息”而不是“验证身份证合法性”、我们以上面的“身份

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

由于现在社会技术的发展,需要验证身份证的合法性越发重要

那么我们如何去验证一个身份证是否合法呢?

我在以前的时候,特意写过一篇VB.NET 查询身份证信息

它是通过“百度身份证信息查询”的REST接口 编写的一个类,

然那个时候并不考虑通过“身份证验证算法”识别身份证是否

有效,注意VB.NET的主题是“查询身份证信息”而不是“验证身

合法”、

C# 二代身份证验证 / VerifyIDCard[通俗易懂]

我们以上面的“身份证号码”为例,当然这是我通过算法生

成的、如果需要理解“身份证号码验证的合法性”算法 那么

须要清楚知道 它是如何去验证的、

身份证号码“第十八位”是整个“身份证验证”流程的核心、

身份证“前十七位”与“规定乘积”后的值相加,最后通过一

规律“序列值”与身份证号码“第十八位”比较,相同合法、

那么我们以上面的“身份证号码”为例,手动计算“身份证号

是否合法

C# 二代身份证验证 / VerifyIDCard[通俗易懂]

从上图中可以看到“510129199705303706”手动校验是

合法的、同时可以知道这是个刚满18不久的小妹妹、

当然你或许会疑惑为什么“校验码”会是6呢?那么我把“

验码”发出来你可能就明白了、

校验码:1,0,X,9,8,7,6,5,4,3,2

索引从“0”开始,这是基本常识 数到“索引6”的位置刚好

是“校验码”为6,所以这身份证号码 毫无疑问是合法的

示例代码:

Console.WriteLine(VerifyIDCard("510129199705303706"));

验证代码:

        public static bool VerifyIDCard(string IDCard)
        {
            int VerifyResult = 0;
            int[] VerifyValue = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 };
            for (int i = 0; i < 17; i++)
                VerifyResult = (VerifyValue[i] * (IDCard[i] - 48)) + VerifyResult;
            return (("10X98765432")[VerifyResult % 11] == IDCard[17]);
        }

 

 

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

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

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


相关推荐

  • vue 获取当前路由地址

    vue 获取当前路由地址vue 获取当前路由地址 1 router 和 route 的区别 router 路由操作对象 只写 需要对路由进行操作时使用 如路由跳转 route 路由信息对象 只读 获取路由相关信息时使用 如获取当前路由地址 2 获取当前路由地址 this route path 原生方法 window location href3 获取路由参数 query params 传参 query 传参时 路由跳转 this router push name name query id

    2026年3月19日
    2
  • Oracle数据库 – 安装教程[通俗易懂]

    Oracle数据库 – 安装教程[通俗易懂]Oracle安装,不断试错,总结经验,分享、看一次安装成功

    2025年7月28日
    4
  • 记:EVE模拟器拓扑配置的保存及导入

    记:EVE模拟器拓扑配置的保存及导入参考博客:https://bbs.51cto.com/thread-1599315-1.html###EVE模拟器版本信息:先关机:点击这里稍等一会,让他保存。再打开开启并点击R1就能看到配置信息已经保存了。正常情况保存就是为了下次登录来使用,关闭所有设备,重新登录界面。先看下配置信息,还在。导入清节点再开启设备,showrun导入成功。…

    2022年5月1日
    153
  • 灾备术语——RPO and RTO

    灾备术语——RPO and RTORPO recoverypoin 恢复点目标 RPO 是实时地复制您业务信息中的每一个数据恢复事务 短时间的 RPO 能够更少地丢失数据 例如 一个五分钟的 RPO 表明必须在五分钟内恢复数据 而一个一小时的 PRO 表明这种数据恢复的弱点在于 在这一个小时内 要备份的数据可能已经丢失了 相反地 一个零分钟的 PRO 表明没有数据可以丢失 因为您的数据及时地备份 复制或记录下来 从而阻止

    2026年3月16日
    3
  • PLANTINUM_plantuml流程图

    PLANTINUM_plantuml流程图bytotinunsplash1.背景随着工作时间的增长,越发觉得用专业的图形(用例图,时序图,ER图等等)去准确表达想法是很重要的。比如针对某个需求绘制的的用例图,比一段乏味的文字来的更加有意义,也便于别人理解。加之最近在学习源码的时候,发现很多书籍中都会使用类图,时序图等UML语言来描述逻辑关系。于是就在网上找了找绘制UML语言时,业界主流的一些工具都用什么,找了半天,大部分都用了下面…

    2025年7月20日
    2
  • springboot启动时是如何加载配置文件application.yml文件

    springboot启动时是如何加载配置文件application.yml文件今天启动springboot时,明明在resources目录下面配置了application.yml的文件,但是却读不出来,无奈看了下源码,总结一下springboot查找配置文件路径的过程,能力有限,欢迎各位大牛指导!!!spring加载配置文件是通过listener监视器实现的,在springboot启动时:在容器启动完成后会广播一个SpringApplicationEvent事件,而Spri…

    2025年9月26日
    7

发表回复

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

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