首页 | 编程语言 | 网站建设 | 游戏天堂 | 冲浪宝典 | 网络安全 | 操作系统 | 软件时空 | 硬件指南 | 病毒相关 | IT 认证
软讯网络 > 编程语言 > .NET > C#.NET > 身份证有效性验证
【标  题】:身份证有效性验证
【关键字】:
【来  源】:http://blog.csdn.net/alldj/archive/2007/04/13/1564073.aspx

身份证有效性验证

public static string Per15To18(string perIDSrc) 

int iS=0; 
//加权因子常数 
int[] iW=new int[]{7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2}; 
//校验码常数 
string LastCode="10X98765432"; 
//新身份证号 
string perIDNew; 
perIDNew=perIDSrc.Substring(0,6); 
//在第6位及第7位上填上'18'或'19'两个数字 
int[] hundred=new int[]{996,997,998,999}; 
for (int i=0;i<hundred.Length;i++) 

if (hundred==Convert.ToInt32(perIDSrc.Substring(12,3))) 

perIDNew+="18"; 
break; 

else if(i==hundred.Length-1) 

perIDNew+="19"; 
break; 


perIDNew+=perIDSrc.Substring(6,9); 
//进行加权求和 
for (int i=0;i<17;i++) 

iS+=int.Parse(perIDNew.Substring(i,1))*iW

//取模运算,得到模值 
int iY=iS%11; 
perIDNew+=LastCode.Substring(iY,1); 
return perIDNew; 


/// <summary> 
/// 身份证18位转15位 
/// </summary> 
/// <param name="perIDSrc">身份证号</param> 
/// <returns></returns> 
public static string Per18To15(string perIDSrc) 

string perIDOld=perIDSrc.Substring(0,6); 
perIDOld+=perIDSrc.Substring(8,9); 
return perIDOld; 

/// <summary> 
/// 身份证有效性验证 
/// </summary> 
/// <param name="perIDSrc">身份证号</param> 
/// <returns></returns> 
public static bool Validper(string perIDSrc) 

            try 
            { 
                if (perIDSrc.Trim().Length == 15) 
                { 
                   string tmp=Per15To18(perIDSrc); 
                   return Validper(tmp); 
                } 
                else if (perIDSrc.Trim().Length == 18) 
                { 
                    if (Per15To18(Per18To15(perIDSrc)) == perIDSrc.Trim()) 
                        return true; 
                    else 
                        return false; 
                } 
                else 
                { 
                    return false; 
                } 
            } 
            catch 
            { 
                return false; 
            } 



注:只需调用Validper()方法
另注:被同事找到一个BUG,不能验证老外的身份证........
 
在C#中利用Keep-Alive处理Socket网络异常断开的方法:【上一篇】
国际化编程中Locale相关概念的一些解释:【下一篇】
【相关文章】
没有相关文章
【随机文章】
  • ASP错误代码
  • 配置网络密罐
  • WPF/E CTP Quick Start - 第三部分:Canvas对象(翻译)
  • “计算机图形学之OpenGL”学习笔记(1)
  • VNC简介
  • 探究X Window System运行原理与启动过程
  • 高血压症状哪些?什么是高血压,高血压的治疗怎样才能做到最好?
  • struts构建文件上传(6)
  • postfix接收大邮件出错: queue file write error
  • openssl自建证书SSL+apache
  • 【相关评论】
    没有相关评论
    【发表评论】
    姓名:
    邮件:
    随机码*
    评论*
          
    |  首 页  |  版权声明  |  联系我们   |  网站地图  |
    CopyRight © 2004-2007 软讯网络 All Rigths Reserved.