原创 身份证有效性验证收藏

新一篇: 清除窗口内所有控件值 | 旧一篇: 清除窗口内所有控件值

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,不能验证老外的身份证........
 

发表于 @ 2007年04月13日 22:32:00|评论(loading...)|编辑

新一篇: 清除窗口内所有控件值 | 旧一篇: 清除窗口内所有控件值

评论:没有评论。

发表评论  


当前用户设置只有注册用户才能发表评论。如果你没有登录,请点击登录
Csdn Blog version 3.1a
Copyright © alldj