一般身份证验证

来源:互联网 发布:八爪鱼采集器 知乎 编辑:程序博客网 时间:2024/06/11 20:48
using System.Text;
/// <summary>
/// personcard 的摘要说明
/// </summary>

public class personcard
{
    
public personcard()
    
{
        
//
        
// TODO: 在此处添加构造函数逻辑
        
//
    }

    
public iddataclass checkcidinfo(string cid)
    
{
        iddataclass _ciddata 
= new iddataclass();        

        
if (!LiTianPing.DBUtility.DbHelperSQL.Exists("select count(*) from per_user where p_card='" + cid + "'"))
        
{
            
string[] acity = new string[] nullnullnullnullnullnullnullnullnullnullnull"北京""天津""河北""山西""内蒙古"nullnullnullnullnull"辽宁""吉林""黑龙江"nullnullnullnullnullnullnull"上海""江苏""浙江""安微""福建""江西""山东"nullnullnull"河南""湖北""湖南""广东""广西""海南"nullnullnull"重庆""四川""贵州""云南""西藏"nullnullnullnullnullnull"陕西""甘肃""青海""宁夏""新疆"nullnullnullnullnull"台湾"nullnullnullnullnullnullnullnullnull"香港""澳门"nullnullnullnullnullnullnullnull"国外" };
            
double isum = 0;
           
            System.Text.RegularExpressions.Regex rg 
= new System.Text.RegularExpressions.Regex(@"^d{17}(d|x)$|^d{15}$");
            System.Text.RegularExpressions.Match mc 
= rg.Match(cid);
            
if (!mc.Success)
            
{
                _ciddata.isvalid 
= false;
                _ciddata.chkinfo 
= "不是有效的身份证号";
                
return _ciddata;
            }

            
if (cid.Length == 15) cid = this.convert15to18(cid);
            cid 
= cid.ToLower();
            cid 
= cid.Replace("x""a");
            
if (acity[int.Parse(cid.Substring(02))] == null)
            
{
                _ciddata.isvalid 
= false;
                _ciddata.chkinfo 
= "非法地区";
                
return _ciddata;
            }

            
try
            
{
                DateTime.Parse(cid.Substring(
64+ "-" + cid.Substring(102+ "-" + cid.Substring(122));
            }

            
catch
            
{
                _ciddata.isvalid 
= false;
                _ciddata.chkinfo 
= "非法生日";
                
return _ciddata;
            }

            
for (int i = 17; i >= 0; i--)
            
{
                isum 
+= (System.Math.Pow(2, i) % 11* int.Parse(cid[17 - i].ToString(), System.Globalization.NumberStyles.HexNumber);

            }

            
if (isum % 11 != 1)
            
{
                _ciddata.isvalid 
= false;
                _ciddata.chkinfo 
= "非法证号";
                
return _ciddata;
            }

            
if (Convert.ToInt32(cid.Substring(64)) < 1989)
            
{
                _ciddata.isvalid 
= true;
                _ciddata.chkinfo 
= acity[int.Parse(cid.Substring(02))] + "," + cid.Substring(64+ "-" + cid.Substring(102+ "-" + cid.Substring(122+ "," + (int.Parse(cid.Substring(161)) % 2 == 1 ? "" : "");
                
return _ciddata;
            }

            
else
            
{
                _ciddata.isvalid 
= false;
                _ciddata.chkinfo 
= "年龄太小";
                
return _ciddata;
            }

        }

        
else
        
{
            _ciddata.isvalid 
= false;
            _ciddata.chkinfo 
= "此身份证已经注册";
            
return _ciddata;
        }

    }

    
//将15位身份证号码转换为18位
    private string convert15to18(string cid)
    
{
        
char[] strjiaoyan = '1','0''x''9''8''7''6''5''4''3''2' };
        
int[] intquan = 79105842163791058421 };
        
string strtemp;
        
int inttemp = 0;

        strtemp 
= cid.Substring(06+ "19" + cid.Substring(6);
        
for (int i = 0; i <= strtemp.Length - 1; i++)
        
{
            inttemp 
+= int.Parse(strtemp.Substring(i, 1)) * intquan[i];
        }

        inttemp 
= inttemp % 11;
        
return strtemp + strjiaoyan[inttemp];
    }


}

//用于保存身份证验证结果的类

public class iddataclass
{
    
public iddataclass()
    
{
    }

    
public bool isvalid;
    
public string chkinfo;
}

 
原创粉丝点击