身份证有效性验证

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值