C#.NET身份证验证算法
获取源码方式:
第一种:打开微信,搜一搜"别打我女儿的主意"打开微信小程序,找到菜单栏,点击源码,进去就可以获得链接
第二种:可以给本文点赞、好评,然后发邮件到792166417@qq.com,如果有学习资料视频可以分享的话,可以捎带分享给我。
using System;
using System.Collections.Generic;
using System.Globalization;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace IDcard
{
public partial class Card : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (Check("360601198801310373"))
{
Response.Write("成功");
}
else
{
Response.Write("失败");
}
}
//加权因子
private static readonly int[] _factors = { 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1 };
//验证位置
private static readonly int[] _codes = { 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 };
/// <summary>
/// 验证是否为身份证号
/// </summary>
/// <param name="idcard">身份证号</param>
/// <returns></returns>
public static bool Check(string idcard)
{
if (idcard.Length == 18)
{
if (ValidBirthday(idcard) && ValidateCode(idcard))
{
return true;
}
}
return false;
}
/// <summary>
/// 验证生日
/// </summary>
/// <param name="idcard">身份证号</param>
/// <returns></returns>
private static bool ValidBirthday(string idcard)
{
string year = idcard.Substring(6, 4);
string month = idcard.Substring(10, 2);
string day = idcard.Substring(12, 2);
DateTime date;
string xdate = year + month + day;
bool result = DateTime.TryParseExact(xdate, "yyyyMMdd", new DateTimeFormatInfo(), DateTimeStyles.AdjustToUniversal, out date);
if (!result)
{
return false;
}
string xmonth = date.Month < 10 ? "0" + date.Month : date.Month.ToString();
string xday = date.Day < 10 ? "0" + date.Day : date.Day.ToString();
if (!date.Year.ToString().Equals(year) || !month.Equals(xmonth) || !day.Equals(xday))
{
return false;
}
return true;
}
/// <summary>
/// 验证身份证规则
/// </summary>
/// <param name="idcard">身份证号</param>
/// <returns></returns>
private static bool ValidateCode(string idcard)
{
int sum = 0;
char[] chars = idcard.ToCharArray();
List<string> list = chars.Select(c => c.ToString()).ToList();
if (list[17] == "x")
{
list[17] = "10";
}
for (int i = 0; i < 17; i++)
{
sum += _factors[i] * Convert.ToInt32(list[i]);
}
//获取验证位置
int position = sum % 11;
if (list[17].Equals(_codes[position].ToString()))
{
return true;
}
return false;
}
}
}
C#.NET身份证验证算法相关推荐
- 18位身份证号验证算法的原理以及C#实现和在管理系统的应用
18位身份证号验证算法的原理以及C#实现和在管理系统的应用 本博文介绍一下我自主开发的企业工资管理系统中关于员工18身份证号合法性验证的原理以及采用C#实现的代码.在实际的管理系统中应用!经过我自己的 ...
- 身份证号码验证算法 javascript实现
在工作中的第一个项目就遇到了身份证号码验证问题,当时的做法是先正则进而判断前六位是否对应和出生日期是否是存在的时间,后四位果断扔掉不管,完全让后端去判断.但是在验证的阶段却出现了省市的编号收集不全.整 ...
- C#桌面办公应用-工资管理系统系列六
C#桌面办公应用-工资管理系统系列六 接前文系列五,本文将讲解自主开发的工资管理系统中的员工管理模块:主要包括"员工初始化信息加载","员工信息综合查询与分页查询&quo ...
- java身份证号码验证算法
身份证号码验证算法 2017-11-02 旭东 Java编程 Java编程 Java编程 微信号 JavaCoder1024 功能介绍 关注语言编程Java,分享.交流Java编程技巧和信息 来自:旭 ...
- java,javascript对18位身份证格式的验证算法
参考资料 1 java实现的18位身份证格式验证算法 http://fanqiang.chinaunix.net/program/java/2006-06-22/4639.shtml 原码中有 ...
- 策略模式,工厂模式,单例模式编写身份证的验证算法
策略模式:它定义算法家族,分别封装起来,让他们之间互相替换,此模式让算法的变化,不会影响使用算法的客户. 1 /// <summary> 2 /// 策略模式 3 /// </sum ...
- java验证身份证号码是否有效源代码
转载自 java验证身份证号码是否有效源代码 1.描述 用java语言判断身份证号码是否有效,地区码.出身年月.校验码等验证算法 2.源代码 package test; import java.t ...
- mysql验证身份证号正确_通过SQL校验身份证号码是否正确
根据提供的身份证号码信息验证身份证号码是否符合二代身份证规范,其中区域编码网上可下载. 使用数据库为DB2,但目测可以通用身份证号码第18位验证算法从网上查得,具体验证算法如下: 1.将前面的身份证号 ...
- Java判断身份证号码
1.描述 用java语言判断身份证号码是否有效,地区码.出身年月.校验码等验证算法 2.源代码 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 ...
- 15位或18位身份证验证
c#实现的18位身份证格式验证算法 18位身份证标准在国家质量技术监督局于1999年7月1日实施的GB11643-1999<公民身份号码>中做了明确的规定. GB11643-1999< ...
最新文章
- 离散时间复指数序列的周期性质
- spring的事务有几种方式
- 计算机专业 美国 硕士,【美国计算机硕士排名】美国计算机硕士专业怎么样
- 51nod 1766
- org.springframework.web.method.annotation.MethodArgumentTypeMismatchException: Failed to convert val
- H3C telnet 配置
- 拓展卡尔曼滤波器(EKF)的数学推导
- 9.数据结构 --- 查找
- 杭电HDUacm2037
- 按键精灵易语言c,易语言插件按键精灵调用方法
- 您的服务器组件没有得到合法授权,服务器将会受限模式运行
- UVALive 4487 - Exclusive-OR (加权并查集+异或运算的性质)
- 云计算发展现状及未来趋势
- php开发视频直播平台技术,视频直播网站开发千万不能忘的一个知识点
- Incremental Learning of Object Detectors without Catastrophic Forgetting详解
- Lodop打印设计(PRINT_DESIGN)介绍
- python opencv 直方图均衡_OpenCV-Python教程(10、直方图均衡化)
- Controller层各注解总结
- WebRTC 入门教程(二)| WebRTC信令控制与STUN/TURN服务器搭建
- Ubuntu+ visual studio + visualGdb
热门文章
- 430单片机实现三人投票表决器_用ATC实现三人表决器.doc
- python网格搜索优化参数_Python中基于网格搜索算法优化的深度学习模型分析糖尿病数据...
- freenas 蜗牛星际_从“白群晖”到“蜗牛星际”,到底哪种NAS方案适合我?
- 计算机应用基础员工工资表,利用VBA编写Excel中的工资条与工资查询窗口
- 什么是订单管理系统OMS
- TEM014 - 新版阿里云网站界面高保真原型模板-AxureUX
- 三津谈保险系统建设(一): 现状分析和建设目标规划
- excel两个表格数据对比_Excel中两个表格对比,找出不同数据
- 工业控制系统基础知识
- WAPI安全协议检测系统测试分析