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


相关推荐

  • c++程序设计基础(第五版)(上) 习题与解答

    c++程序设计基础(第五版)(上) 习题与解答习题与解答C++程序设计基础(第5版)(上)习题与解答第1章练习题同步练习1.1一、选择题1.一个最简单的C++程序,可以只有一个()。(A)库函数 (B)自定义函数 (C)main函数 (D)空函数2.函数名是(),用于识别和调用函数。(A)关键字 (B)标识符 (C)常数 (D)语句3.用C++语言编写的源程序要成为目标程序必须要经过()…

    2022年4月28日
    93
  • 面试之Redis

    面试之Redis面试之Redis

    2022年4月23日
    48
  • 【STM32】HAL库 STM32CubeMX教程三—-外部中断(HAL库GPIO讲解)

    【STM32】HAL库 STM32CubeMX教程三—-外部中断(HAL库GPIO讲解)前言上一节我们讲解了STM32CubeMX的基本使用和工程的配置,那么这一节我们正式来学习CubeMX配置STM32的各个外设功能了今天我们会详细的带你学习STM32CubeMX配置外部中断,并且讲解HAL库的GPIO的各种函数,带你学习不一样的STM32如果还没有配置过工程,请参看上一篇博客《STM32CubeMX教程二–基本使用(新建工程点亮LED灯)》那么话不多说,我们开…

    2022年6月11日
    100
  • 正则表达式中的特殊字符一览[通俗易懂]

    正则表达式中的特殊字符一览[通俗易懂]
    正则表达式中的特殊字符一览
     
    〓简介〓
    字符意义:对于字符,通常表示按字面意义,指出接着的字符为特殊字符,不作解释。
    例如:/b/匹配字符’b’,通过在b前面加一个反斜杠,也就是/b/,则该字符变成特殊字符,表示匹配一个单词的分界线。或者:对于几个字符,通常说明是特殊的,指出紧接着的字符不是特殊的,而应该按字面解释。例如:*是一个特殊字符,匹配任意个字符(包括0个字符);例如:/a*/意味匹配0个或多个a。为了匹配字面上的*,在a前面加一个反斜杠;

    2022年5月20日
    36
  • 如何判断一个网址是否安全_域名和dns的区别

    如何判断一个网址是否安全_域名和dns的区别前言近几年,互联网发生着翻天覆地的变化,尤其是我们一直习以为常的HTTP协议,在逐渐的被HTTPS协议所取代,在浏览器、搜索引擎、CA机构、大型互联网企业的共同促进下,互联网迎来了“HTTPS加密时代”,HTTPS将在未来的几年内全面取代HTTP成为传输协议的主流。读完本文,希望你能明白: HTTP通信存在什么问题 HTTPS如何改进HTTP存在那些问题 HTTP…

    2022年10月16日
    0
  • TranslateMessage DispatchMessage

    TranslateMessage DispatchMessageTranslateMessage函数函数功能描述:将虚拟键消息转换为字符消息。字符消息被送到调用线程的消息队列中,在下一次线程调用函数GetMessage或PeekMessage时被读出。.函数原型:   BOOLTranslateMessage( CONSTMSG*lpMsg);.参数:   lpMsg        指向一个含有用GetMes

    2025年7月16日
    1

发表回复

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

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