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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 2020最新Java常见面试题及答案

    Java最新常见面试题+答案汇总1、面试题模块汇总面试题包括以下十九个模块:Java基础、容器、多线程、反射、对象拷贝、JavaWeb模块、异常、网络、设计模式、Spring/SpringMVC、SpringBoot/SpringCloud、Hibernate、Mybatis、RabbitMQ、Kafka、Zookeeper、MySql、Redis、JVM。如下图所示:可…

    2022年4月15日
    37
  • can not create this interface_getinterfaces方法

    can not create this interface_getinterfaces方法Androidstudio导入依赖,构建时报错错误如下: StaticinterfacemethodsareonlysupportedstartingwithAndroidN(–min-api24):voidbutterknife.Unbinder.lambda$static$0()Message{kind=ERROR,text=Statici…

    2025年8月31日
    4
  • 数组和对象的深拷贝_Java对象深拷贝工具类

    数组和对象的深拷贝_Java对象深拷贝工具类functiondeepCopy(obj,cache){if(cache===void0)cache=[]if(obj===null||typeofobj!==’object’)returnobjvarhit=find(cache,function(c){debuggerreturn…

    2022年10月2日
    2
  • 算法-动态规划 Dynamic Programming–从菜鸟到老鸟

    算法-动态规划 Dynamic Programming–从菜鸟到老鸟前言最近在牛客网上做了几套公司的真题,发现有关动态规划(DynamicProgramming)算法的题目很多。相对于我来说,算法里面遇到的问题里面感觉最难的也就是动态规划(DynamicProgramming)算法了,于是花了好长时间,查找了相关的文献和资料准备彻底的理解动态规划(DynamicProgramming)算法。一是帮助自己总结知识点,二是也能够帮助他人更好的理解这个算法。后面的参

    2022年6月11日
    85
  • 一致性哈希算法原理及代码实现「建议收藏」

    一致性哈希算法原理及代码实现「建议收藏」一致性哈希安装goget-ugithub.com/junhaideng/consistent使用c:=consistent.New()ips:=[]string{“192.168.0.1″,”192.168.0.2″,”192.168.0.3″,”192.168.0.4”}for_,ip:=rangeips{c.Add(ip)}fmt.Println(“ip:”,c.Get(“/hello.txt”))背景在介绍一致性哈希之前,首先来看

    2022年7月27日
    5
  • Win10 桌面美化

    Win10 桌面美化Win10桌面美化最近发现了几款Win10界面美化的软件,看了看别人家的Win10操作界面,瞬间觉得自己的low了,关键是赏心悦目啊!废话不多说,先看看我原来桌面和美化后的桌面对比图原始桌面美化桌面1.安装RocketDockRocketDock可以提供类似macos的操作系统图标特效,打开安装包进行安装,完毕后启动得到效果如下:可以发现切换效果与mac类似,他默认的主题是C…

    2022年4月25日
    36

发表回复

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

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