C# 身份证信息验证

 #region 身份证验证
        /// <summary>
        /// 验证身份证信息
        /// </summary>
        /// <param name="ACidCode"></param>
        /// <returns></returns>
        public static bool CheckCidInfo(string ACidCode)
        {
            if (string.IsNullOrEmpty(ACidCode)) return false; // 空
            for (int i = 0; i < 17; i++)
                if ("0123456789".IndexOf(ACidCode[i]) < 0) return false; // 前17位必须数字
            if ("0123456789Xx".IndexOf(ACidCode[17]) < 0) return false; // 最后一位必须数字或X
            int vProvince = int.Parse(ACidCode.Substring(0, 2));
            if (vProvince > PROVINCE_CODE.Length ||
                string.IsNullOrEmpty(PROVINCE_CODE[vProvince])) return false; // 地址码错误
            DateTime vBirthday;
            if (!DateTime.TryParseExact(ACidCode.Substring(6, 8), "yyyyMMdd", null,
                System.Globalization.DateTimeStyles.None, out vBirthday)) return false; // 日期格式错误
            if (vBirthday > DateTime.Now) return false; // 未来的人???
            if (vBirthday < new DateTime(1900, 10, 01)) return false; // 还没建国
            int T = 0;
            for (int i = 0; i < 18; i++)
            {
                int j = "xX".IndexOf(ACidCode[i]) < 0 ? ACidCode[i] - '0' : 10;
                T += (int)Math.Pow(2, 17 - i) % 11 * j;
            }
            if (T % 11 != 1) return false; // 验证码错误
            return true;
        }

        /// <summary>
        /// 身份证区域码
        /// </summary>
        /// <param name="strTel"></param>
        /// <returns></returns>
        public static string[] PROVINCE_CODE = {
    null, null, null, null, null, null, null, null, null, null, null,
    "北京", "天津", "河北", "山西", "内蒙古", null, null, null, null, null,
    "辽宁", "吉林", "黑龙江", null, null, null, null, null, null, null,
    "上海", "江苏", "浙江", "安微", "福建", "江西", "山东", null, null, null,
    "河南", "湖北", "湖南", "广东", "广西", "海南", null, null, null,
    "重庆", "四川", "贵州", "云南", "西藏", null, null, null, null, null, null,
    "陕西", "甘肃", "青海", "宁夏", "新疆", null, null, null, null, null,
    "台湾", null, null, null, null, null, null, null, null, null,
    "香港", "澳门", null, null, null, null, null, null, null, null,
    "国外"};
        #endregion

posted on 2011-07-02 09:29  飞舞的蒲公英  阅读(639)  评论(0)    收藏  举报