net实现中国身份证号码验证源码

.net实现中国身份证号码验证源码

using System; ///

/// Summary description for IDCardValid ///

public class IDCardValid {

public IDCardValid()

{ //

// TODO: Add constructor logic here // } ///

/// 验证身份证号码 ///

/// 身份证号码

/// 验证成功为True,否则为False public static bool CheckIDCard(string Id) {

if (Id.Length == 18) {

bool check = CheckIDCard18(Id); return check; }

else if (Id.Length == 15) {

bool check = CheckIDCard15(Id); return check; } else {

return false; } }

#region 身份证号码验证 ///

/// 验证15位身份证号 ///

/// 身份证号

/// 验证成功为True,否则为False

private static bool CheckIDCard18(string Id) {

long n = 0;

if (long.TryParse(Id.Remove(17), out n) == false

||

n

Math.Pow(10,

16)

||

long.TryParse(Id.Replace('x', '0').Replace('X', '0'), out n) == false)

1

{

return false;//数字验证 }

string address =

"11x22x35x44x53x12x23x36x45x54x13x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82x91";

if (address.IndexOf(Id.Remove(2)) == -1) {

return false;//省份验证 }

string birth = Id.Substring(6, 8).Insert (6, "-").Insert(4, "-");

DateTime time = new DateTime();

if (DateTime.TryParse(birth, out time) == false) {

return false;//生日验证 }

string[]

string[]

arrVarifyCode

Wi

= =

("1,0,x,9,8,7,6,5,4,3,2").Split(',');

("7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2").Split(','); char[] Ai = Id.Remove(17).ToCharArray(); int sum = 0;

for (int i = 0; i

int y = -1;

Math.DivRem(sum, 11, out y);

if (arrVarifyCode[y] != Id.Substring(17, 1).ToLower()) {

return false;//校验码验证 }

return true;//符合GB11643-1999标准 } ///

/// 验证18位身份证号 ///

/// 身份证号

/// 验证成功为True,否则为False

private static bool CheckIDCard15(string Id) {

long n = 0;

if (long.TryParse(Id, out n) == false || n

sum

+=

int.Parse(Wi[i])

*

int.Parse(Ai[i].ToString());

Math.Pow(10, 14)) {

return false;//数字验证 }

string address =

"11x22x35x44x53x12x23x36x45x54x13x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82x91";

if (address.IndexOf(Id.Remove(2)) == -1) {

return false;//省份验证 }

string birth = Id.Substring(6, 6).Insert(4, "-").Insert(2, "-");

DateTime time = new DateTime();

if (DateTime.TryParse(birth, out time) == false) { &n

bsp; return false;//生日验证 }

return true;//符合15位身份证标准 }

#endregion }

2

.net实现中国身份证号码验证源码

using System; ///

/// Summary description for IDCardValid ///

public class IDCardValid {

public IDCardValid()

{ //

// TODO: Add constructor logic here // } ///

/// 验证身份证号码 ///

/// 身份证号码

/// 验证成功为True,否则为False public static bool CheckIDCard(string Id) {

if (Id.Length == 18) {

bool check = CheckIDCard18(Id); return check; }

else if (Id.Length == 15) {

bool check = CheckIDCard15(Id); return check; } else {

return false; } }

#region 身份证号码验证 ///

/// 验证15位身份证号 ///

/// 身份证号

/// 验证成功为True,否则为False

private static bool CheckIDCard18(string Id) {

long n = 0;

if (long.TryParse(Id.Remove(17), out n) == false

||

n

Math.Pow(10,

16)

||

long.TryParse(Id.Replace('x', '0').Replace('X', '0'), out n) == false)

1

{

return false;//数字验证 }

string address =

"11x22x35x44x53x12x23x36x45x54x13x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82x91";

if (address.IndexOf(Id.Remove(2)) == -1) {

return false;//省份验证 }

string birth = Id.Substring(6, 8).Insert (6, "-").Insert(4, "-");

DateTime time = new DateTime();

if (DateTime.TryParse(birth, out time) == false) {

return false;//生日验证 }

string[]

string[]

arrVarifyCode

Wi

= =

("1,0,x,9,8,7,6,5,4,3,2").Split(',');

("7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2").Split(','); char[] Ai = Id.Remove(17).ToCharArray(); int sum = 0;

for (int i = 0; i

int y = -1;

Math.DivRem(sum, 11, out y);

if (arrVarifyCode[y] != Id.Substring(17, 1).ToLower()) {

return false;//校验码验证 }

return true;//符合GB11643-1999标准 } ///

/// 验证18位身份证号 ///

/// 身份证号

/// 验证成功为True,否则为False

private static bool CheckIDCard15(string Id) {

long n = 0;

if (long.TryParse(Id, out n) == false || n

sum

+=

int.Parse(Wi[i])

*

int.Parse(Ai[i].ToString());

Math.Pow(10, 14)) {

return false;//数字验证 }

string address =

"11x22x35x44x53x12x23x36x45x54x13x31x37x46x61x14x32x41x50x62x15x33x42x51x63x21x34x43x52x64x65x71x81x82x91";

if (address.IndexOf(Id.Remove(2)) == -1) {

return false;//省份验证 }

string birth = Id.Substring(6, 6).Insert(4, "-").Insert(2, "-");

DateTime time = new DateTime();

if (DateTime.TryParse(birth, out time) == false) { &n

bsp; return false;//生日验证 }

return true;//符合15位身份证标准 }

#endregion }

2


相关文章

  • 计算机网络课程论文模板及选题
  • 武汉理工大学 计算机网络课程论文 题目作者学院专业学号指导教师 信息工程学院 电子信息工程 李方敏 二〇一五年 月 日 武汉理工大学信息工程学院课程论文诚信声明 本人声明:所呈交的课程论文,是本人在指导老师的指导下,独立开展工作所取得的成果 ...查看


  • 本科计算机论文题目
  • 基于asp 语言的测试项目 学生信息管理系统的设计与实现 基于ASP.NET 的社区人口管理系统 基于ASP.NET 的课程教学网站设计 公司会议网站 C#高校工资管理系统 C#在线点歌系统 <数据库原理>精品课程网站设计 教师 ...查看


  • 盘点2010年开源cms系统
  • 提起开源cms,大家第一想到的是php的cms,因为php开源的最早,也最为用户和站长们认可,随着各大cms系统的功能的不断完善和各式各样的开源cms的出现,.net和java的高端的cms系统也逐渐的走上了开源的路线,尤其是 .net的c ...查看


  • 网上银行"安全登录控件"分析
  • 网上银行"安全登录控件"分析 国内的一些银行的网上银行系统为了用户信息的安全,在登录页面上使用了名为"安全登录控件"的东西,取代了传统的 HTML 的输入控件(Input),下面就对用户量较大的招商银 ...查看


  • EXCEL提取身份证信息以及鉴别身份证真伪的技术文件
  • EXCEL中如何提取身份证出生日期.性别.检验身份证号码的正确性 中国居民身份证号码是一组特征组合码,原为15位,现升级为18位,其编码规则为: 15位:6位数字常住户口所在县市的行政区划代码,6位数字出生日期代码,3位数字顺序码. 18位 ...查看


  • 模拟实验1-1:模拟实验的准备(含网上银行)
  • 综合模拟实验一之:实验的准备(含网上银行模块) 所选电子商务实验室的模块:"学习园地"."网络营销"之"电子邮件"."网上银行"前台. 后台. 实验1. 学生登 ...查看


  • 做一个网站应了解哪些方面的知识
  • 网站建设: 百度百科这样告诉我们,网站建设是网站策划师.网络程序员.网页设计师等岗位,网站建设应用各种网络程序开发技术和网页设计技术,为企事业单位.公司或个人在全球互联网上建设站点,并包含域名注册和主机托管等服务的总称.其作用为展现公司形象 ...查看


  • 软件设计毕业论文
  • 河南质量工程职业学院 毕业论文 <软件工程>课程设计的度量与评价系统 The Software Engineering Course Design of Measuring and Evaluating System 题 目: ...查看


  • 计算机网络安全技术与实训第3章
  • 第3章 操作系统的安全配置 [学习目标] 1. 理解操作系统安全的概念和安全评估准则 2. 掌握应急启动盘的制作 3. 掌握windows 操作系统中账号和权限设置 4. 掌握windows 系统和服务安全配置 5. 掌握 linux 操作 ...查看


热门内容