C# 二代身份证验证 / VerifyIDCard[通俗易懂]
c# 通俗易懂 验证 身份证 二代
2023-06-13 09:12:32 时间
大家好,又见面了,我是你们的朋友全栈君。
由于现在社会技术的发展,需要验证身份证的合法性越发重要
那么我们如何去验证一个身份证是否合法呢?
我在以前的时候,特意写过一篇VB.NET 查询身份证信息当
然它是通过“百度身份证信息查询”的REST接口 编写的一个类,
当然那个时候并不考虑通过“身份证验证算法”识别身份证是否
有效,注意VB.NET的主题是“查询身份证信息”而不是“验证身
份证合法性”、
我们以上面的“身份证号码”为例,当然这是我通过算法生
成的、如果需要理解“身份证号码验证的合法性”算法 那么
必须要清楚知道 它是如何去验证的、
身份证号码“第十八位”是整个“身份证验证”流程的核心、
身份证“前十七位”与“规定乘积”后的值相加,最后通过一
定规律“序列值”与身份证号码“第十八位”比较,相同合法、
那么我们以上面的“身份证号码”为例,手动计算“身份证号
码”是否合法
从上图中可以看到“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.cn/153662.html原文链接:https://javaforall.cn
相关文章
- c#子窗口与父窗口_主窗体控制子窗体的显示
- C#时间控件[通俗易懂]
- 串口助手(简洁版)上位机软件零基础教程( C# + visual studio2017 )(二)
- C#并行计算 Parallel.ForEach[通俗易懂]
- C# 处理透明问题[通俗易懂]
- C# Repeater嵌套循环[通俗易懂]
- asp.net(C#)中Repeater嵌套绑定Repeater[通俗易懂]
- 【C#】C#获得计算机硬件信息和操作系统信息,ManagementObjectSearcher[通俗易懂]
- C#生成高质量缩略图程序—终极算法
- c#中的实现php中的preg_replace
- C#调用C++版本dll时的类型转换需要注意的问题小结
- asp.net(c#)下读取word文档的方法小结
- C#数据结构与算法揭秘五栈和队列
- C#.net格式化时间字符串达到不同的显示效果
- C#Mysql查询Rownum的解决方法
- C#删除文件目录或文件的解决方法
- C#技巧之快速删除bin和obj文件夹的方法
- C#实现简单的JSON序列化功能代码实例
- C#通过XML节点属性/属性值读取写入XML操作代码实例
- C#正则表达式分解和转换IP地址实例(C#正则表达式大全c#正则表达式语法)
- C#不同类型的成员变量(字段)的默认值介绍
- c#多种加解密示例(md5加密解密)
- c#详解datetime使用示例
- c#实现图片二值化例子(黑白效果)