asp.net身份证号码校验方法

来源:互联网 发布:nginx实现会话保持 编辑:程序博客网 时间:2024/05/17 03:06
 #region 身份证校验        /// <summary>        /// 身份证校验        /// </summary>        /// <param name="Code">身份证号码</param>        /// <returns></returns>        [WebMethod]                  public string CheckCode(string Code)        {            try            {                Code = Code.Trim();//去除首尾空格                if (Code.Length == 18)                {                    string AreaCode = Code.Substring(0, 6);//获取地区码(前6位是地区码)                    string BirthDate = Code.Substring(6, 8);//获取出生日期(中间8位是出生年月日)                    //string IdCode = Code.Substring(0,17);                    SqlHerper sh = new SqlHerper();                    string CheckArea = sh.ExeScalar(string.Format("select count(*) from Area where ID='{0}'",AreaCode)); //需要查询地区代码库,可从国家统计局获取到全国地区代码                    if (CheckArea == "" || Convert.ToInt32(CheckArea) <= 0) //验证地区码                    {                        return JsonConvert.SerializeObject("-1"); //地区码不正确                    }                    else                    {                        BirthDate = BirthDate.Insert(4, "-").Insert(7, "-");                        DateTime time=new DateTime();                        if (!DateTime.TryParse(BirthDate, out time)) //校验生日是否正确                        {                            return JsonConvert.SerializeObject("-2"); //生日格式不正确                        }                        else                        {                            if (getValidateCode(Code.Substring(0, 17)).ToLower() != Code.Substring(17, 1).ToLower()) //检验最后一位校验码是否正确                            {                                return JsonConvert.SerializeObject("-3"); //校验码不正确                            }                            else                            {                                return JsonConvert.SerializeObject("1");                            }                        }                    }                }                else                {                    return JsonConvert.SerializeObject("-4"); //身份证号码长度不为18位                }            }                        catch            {                return JsonConvert.SerializeObject("-5"); //未知异常            }        }        #endregion         #region 根据身份证前17数获取身份证最后一位校验码        /// <summary>        /// 根据身份证前17数获取身份证最后一位校验码        /// </summary>        /// <param name="id17">前17位数</param>        /// <returns>返回最后一位校验码</returns>        public string getValidateCode(String id17)        {            string[] arrVarifyCode = ("1,0,x,9,8,7,6,5,4,3,2").Split(',');            string[] Wi = ("7,9,10,5,8,4,2,1,6,3,7,9,10,5,8,4,2").Split(',');            char[] Ai = id17.ToCharArray();            int sum = 0;            for (int i = 0; i < 17; i++)            {                sum += int.Parse(Wi[i]) * int.Parse(Ai[i].ToString());            }            int y = -1;            Math.DivRem(sum, 11, out y);            string a = arrVarifyCode[y];            return arrVarifyCode[y];        }        #endregion  public class SqlHerper    {        private static string connStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\Users\rudy_lai\Desktop\新建文件夹\WcfService1\WcfService1\DB\Area.accdb";        //private static string connStr = @"Provider=Microsoft.ACE.OLEDB.12.0;Data Source=DB\Area.accdb";        OleDbConnection conn = null;        /// <summary>        /// 返回查询首行首列        /// </summary>        /// <param name="SqlStr">查询语句</param>        /// <returns></returns>        public string ExeScalar(string SqlStr)        {            using (conn = new OleDbConnection(connStr))            {                try                {                    conn.Open();                    OleDbCommand cmd = new OleDbCommand(SqlStr, conn);                    return cmd.ExecuteScalar().ToString();                }                catch                {                    return "";                }                finally                {                    conn.Close();                    conn.Dispose();                }            }        }            }

0 0
原创粉丝点击