示例#1
0
        /// <summary>
        /// 解析身份证信息
        /// </summary>
        /// <param name="idCardNumber"></param>
        /// <example>
        ///  IDCardNumber card = IDCardNumber.Get(code);
        /// </example>
        /// <returns>IDCardNumber</returns>
        public static IdCardNumber Get(string idCardNumber)
        {
            if (IdCardNumber.Areas.Count < 1)
            {
                IdCardNumber.FillAreas();
            }
            if (!IdCardNumber.CheckIDCardNumber(idCardNumber))
            {
                throw new Exception("非法的身份证号码");
            }
            //
            IdCardNumber cardInfo = new IdCardNumber(idCardNumber);

            return(cardInfo);
        }
示例#2
0
        /// <summary>
        /// 生成随身份证号
        /// </summary>
        /// <param name="seed">随机数种子</param>
        /// <returns></returns>
        private static string _radomCardNumber(int seed)
        {
            if (IdCardNumber.Areas.Count < 1)
            {
                IdCardNumber.FillAreas();
            }
            System.Random rd = new System.Random(seed);
            //随机生成发证地
            string area = "";

            do
            {
                area = IdCardNumber.Areas[rd.Next(0, IdCardNumber.Areas.Count - 1)][0];
            } while (area.Substring(4, 2) == "00");
            //随机出生日期
            DateTime birthday = DateTime.Now;

            birthday = birthday.AddYears(-rd.Next(16, 60));
            birthday = birthday.AddMonths(-rd.Next(0, 12));
            birthday = birthday.AddDays(-rd.Next(0, 31));
            //随机码
            string code = rd.Next(1000, 9999).ToString("####");
            //生成完整身份证号
            string codeNumber = area + birthday.ToString("yyyyMMdd") + code;
            double sum        = 0;
            string checkCode  = null;

            for (int i = 2; i <= 18; i++)
            {
                sum += int.Parse(codeNumber[18 - i].ToString(), NumberStyles.HexNumber) * (Math.Pow(2, i - 1) % 11);
            }
            string[] checkCodes = { "1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2" };
            checkCode  = checkCodes[(int)sum % 11];
            codeNumber = codeNumber.Substring(0, 17) + checkCode;
            //
            return(codeNumber);
        }