/// <summary> /// 校验验证码 /// </summary> /// <param name="type">验证码类型</param> /// <param name="points">验证码点位置</param> /// <returns></returns> public async Task<bool> CheckVerifyCode(VerifyCodeType type, params Point[] points) { var randType = "sjrand"; //为了准确起见,我们使用真正的引用页 var urlRefer = "https://kyfw.12306.cn/otn/login/init"; if (type == VerifyCodeType.SubmitOrder) { randType = "randp"; urlRefer = "https://kyfw.12306.cn/otn/confirmPassenger/initDc"; } var ctx = Session.NetClient.Create<WebResponseResult<VerifyCodeCheckResult>>( HttpMethod.Post, "https://kyfw.12306.cn/otn/passcodeNew/checkRandCodeAnsyn", urlRefer, new { randCode = points.Select(s => s.X + "," + s.Y).JoinAsString(","), rand = randType } ); await ctx.SendTask(); return ctx.IsValid() && ctx.Result.Data.Result == 1; }
/// <summary> /// 发送验证码 /// 根据不同的包类型使用不同的短信签名 /// </summary> /// <param name="verifyCodeType"></param> /// <param name="mobile"></param> /// <param name="packType"></param> /// <returns></returns> public static ResultInfo SendVerifyCode(VerifyCodeType verifyCodeType, string mobile, int packType, string ip) { if (string.IsNullOrEmpty(BaseUrl)) { throw new ApplicationException("fundationApiDomain配置不能为空"); } if (string.IsNullOrWhiteSpace(mobile)) { return(new ResultInfo(-1, "手机号不能为空")); } var js = new JsonString(); js.Set("verifyCodeType", (int)verifyCodeType); js.Set("mobile", mobile); js.Set("packType", packType); js.Set("ip", ip); var url = string.Format("http://{0}/fundationapi/sendsms/sendverifycode", BaseUrl); var resp = HttpWebResponseUtility.HttpPost(url, js.ToString()); var jsonString = new JsonString(resp); var result = new ResultInfo <string>(); result.Error_no = jsonString.GetInt("error_no"); result.Error_info = jsonString.Get("error_info").SafeToString(); result.Data = jsonString.Get("data").SafeToString(); return(result); }
/// <summary> /// 产生验证码(随机产生4-6位) /// </summary> /// <param name="type">验证码类型:数字,字符,符合</param> /// <param name="length">默认0为随机4~6位,指定位数则生产对应位数</param> /// <returns></returns> public string CreateVerifyCode(VerifyCodeType type, int length = 0) { string verifyCode = string.Empty; Random random = new Random(); if (length == 0) { length = random.Next(4, 6); } switch (type) { case VerifyCodeType.NumberVerifyCode: verifyCode = GetSingleObj().CreateNumberVerifyCode(length); break; case VerifyCodeType.AbcVerifyCode: verifyCode = GetSingleObj().CreateAbcVerifyCode(length); break; case VerifyCodeType.MixVerifyCode: verifyCode = GetSingleObj().CreateMixVerifyCode(length); break; } return(verifyCode); }
/// <summary> /// 校验验证码 /// </summary> /// <param name="type">验证码类型</param> /// <param name="points">验证码点位置</param> /// <returns></returns> public async Task <bool> CheckVerifyCode(VerifyCodeType type, params Point[] points) { var randType = "sjrand"; //为了准确起见,我们使用真正的引用页 var urlRefer = "https://kyfw.12306.cn/otn/login/init"; if (type == VerifyCodeType.SubmitOrder) { randType = "randp"; urlRefer = "https://kyfw.12306.cn/otn/confirmPassenger/initDc"; } var ctx = Session.NetClient.Create <WebResponseResult <VerifyCodeCheckResult> >( HttpMethod.Post, "https://kyfw.12306.cn/otn/passcodeNew/checkRandCodeAnsyn", urlRefer, new { randCode = points.Select(s => s.X + "," + s.Y).JoinAsString(","), rand = randType } ); await ctx.SendTask(); return(ctx.IsValid() && ctx.Result.Data.Result == 1); }
/// <summary> /// 产生验证码(随机产生4-6位) /// </summary> /// <param name="type">验证码类型:数字,字符,符合</param> /// <returns></returns> public async Task <string> CreateVerifyCodeAsync(VerifyCodeType type) { string verifyCode = string.Empty; Random random = new Random(); int length = random.Next(4, 6); switch (type) { case VerifyCodeType.NumberVerifyCode: verifyCode = await Task.Run(() => GetSingleObj().CreateNumberVerifyCode(length)); break; case VerifyCodeType.AbcVerifyCode: verifyCode = await Task.Run(() => GetSingleObj().CreateAbcVerifyCode(length)); break; case VerifyCodeType.MixVerifyCode: verifyCode = await Task.Run(() => GetSingleObj().CreateMixVerifyCode(length)); break; } return(verifyCode); }
/// <summary> /// 加载验证码 /// </summary> /// <param name="type">验证码类型</param> /// <returns></returns> public async Task <Image> LoadVerifyCodeImage(VerifyCodeType type = VerifyCodeType.Login) { var ctx = Session.NetClient.Create <Image>(HttpMethod.Get, ApiList.VerifyCodeImage); await ctx.SendAsync(); return(ctx.Result); }
/// <summary> /// 产生验证码(随机产生4-6位) /// </summary> /// <param name="type">验证码类型:数字,字符,符合</param> /// <returns></returns> public string CreateVerifyCode(VerifyCodeType type) { string verifyCode = string.Empty; Random random = new Random(); int length = random.Next(4, 6); switch (type) { case VerifyCodeType.NumberVerifyCode: verifyCode = GetSingleObj().CreateNumberVerifyCode(length); break; case VerifyCodeType.AbcVerifyCode: verifyCode = GetSingleObj().CreateAbcVerifyCode(length); break; case VerifyCodeType.MixVerifyCode: verifyCode = GetSingleObj().CreateMixVerifyCode(length); break; } //2019-03-02 增加存入缓存 //var ic = new MemoryCache(); //ic.Set<string>("code_" + verifyCode, verifyCode, 120);//2分钟自动过期 //2019-03-04 增加Redis缓存 Utils.MemoryCahce.Set <string>("code_" + verifyCode, verifyCode, 120); return(verifyCode); }
/// <summary> /// 获取验证码 /// </summary> /// <param name="vCodeModel">验证码类型</param> public void GetSmsVerifyCode(string appSign, VerifyCodeViewModel vCodeModel) { try { if (vCodeModel == null) { throw new MessageException("获取验证码参数不可为空!"); } if (vCodeModel.TerminalSign == null) { throw new MessageException("终端标识不可为空!"); } VerifyCodeType verifyCodeType = (VerifyCodeType)Extensions.ToInt(vCodeModel.CodeType, 1); SmsFuncType funcType = verifyCodeType == VerifyCodeType.BindMobile ? SmsFuncType.BindMobile : SmsFuncType.Login; var verifyCode = service.GetVerifyCode(appSign, vCodeModel.Mobile, vCodeModel.TerminalSign, verifyCodeType); // 3.调用发送邮件接口,发送验证码 string title = string.Empty; string content = string.Empty; SmsType smsType = SmsType.UnKnown; decimal validateCodeExpire = ConfigUtil.ValidatecodeExpire / 60; switch (verifyCodeType) { case VerifyCodeType.Login: case VerifyCodeType.BindMobile: { smsType = SmsType.ValidateCode; content = string.Format(MsgTemplateUtil.MsgDict["SmsValidCode"], verifyCode, validateCodeExpire); break; } default: { throw new MessageException("未知的验证码类型!"); } } if (!string.IsNullOrWhiteSpace(content)) { //发送短信 if (verifyCodeType == VerifyCodeType.Login || verifyCodeType == VerifyCodeType.BindMobile) { var parms = new Dictionary <string, object>(); parms.Add("code", verifyCode); parms.Add("code_expire", validateCodeExpire); SingleInstance <SmsBLL> .Instance.SendSmsMsg(appSign, vCodeModel.Mobile, parms, content, smsType, funcType); } } } catch (Exception ex) { LogUtil.Error(ex.StackTrace); throw new MessageException(ex.Message); } }
/// <summary> /// 验证码图片 => byte[] /// </summary> /// <param name="verifyCode">验证码</param> /// <param name="width">宽</param> /// <param name="height">高</param> /// <returns>byte[]</returns> byte[] IVerifyCode.CreateImageVerifyCodeToByte(VerifyCodeType verifyCodeType, int width, int height, int length) { //保存图片数据 using (MemoryStream stream = new MemoryStream()) using (Bitmap bitmap = this.CreateVerifyCode(verifyCodeType, width, height, length)) { bitmap.Save(stream, ImageFormat.Jpeg); //输出图片流 return(stream.ToArray()); } }
/// <summary> /// 保存验证码 /// </summary> public static bool Insert(VerifyCodeType verifyCodeType, string mobile, string verifyCode, int packType, int status, string comment) { if (string.IsNullOrWhiteSpace(mobile) || string.IsNullOrWhiteSpace(verifyCode)) { return(false); } var sql = "INSERT INTO [dbo].[VerifyCodeInfo]([Mobile],[VerifyCode],[VerifyCodeType],[Status],[Comment],[PackType]) VALUES(@Mobile,@VerifyCode,@VerifyCodeType,@Status,@Comment,@PackType);"; using (var conn = new SqlConnection(ConnectionString.DB_IQFUser)) { var count = conn.Execute(sql, new { verifyCodeType = verifyCodeType, mobile = Cryptogram.EncryptPassword(mobile), verifyCode = verifyCode, packType = packType, status = status, comment }); return(count > 0); } }
/// <summary> /// 选择一个类型使用 /// </summary> private void ChoiceType() { int Count = HasType.Count; if (Count > 0) { Random rd = new Random(); UseType = HasType[rd.Next(0, Count)]; } else { throw new VerifyCodeException("请先配置想使用的类型"); } }
/// <summary> /// 产生验证码(指定长度) /// </summary> /// <param name="type">验证码类型:数字,字符,符合</param> /// <param name="length">长度</param> /// <returns></returns> public string CreateVerifyCode(VerifyCodeType type, int length) { var verifyCode = string.Empty; // var random = new Random(); verifyCode = type switch { VerifyCodeType.NumberVerifyCode => CreateNumberVerifyCode(length), VerifyCodeType.AbcVerifyCode => CreateAbcVerifyCode(length), VerifyCodeType.MixVerifyCode => CreateMixVerifyCode(length), _ => verifyCode }; return(verifyCode); }
/// <summary> /// 获取有效验证码(最近五分钟) /// </summary> /// <param name="mobile">手机号</param> /// <returns></returns> public static VerifyCodeInfoEntity GetValid(string mobile, VerifyCodeType codeType) { if (string.IsNullOrWhiteSpace(mobile)) { return(null); } var sql = "select top 1 * from dbo.VerifyCodeInfo t where t.mobile = @mobile and t.VerifyCodeType = @codeType and t.[status] = 1 and t.AddTime between @startTime and @endTime order by t.AddTime DESC;"; using (var conn = new SqlConnection(ConnectionString.DB_IQFUser)) { var enMobile = Cryptogram.EncryptPassword(mobile); var startTime = DateTime.Now.AddSeconds(-300); var entity = conn.Query <VerifyCodeInfoEntity>(sql, new { mobile = enMobile, codeType = codeType, startTime = startTime, endTime = DateTime.Now }).FirstOrDefault(); return(entity); } }
/// <summary> /// 校验获取验证码请求参数 /// </summary> /// <param name="verifyCodeType">验证码类型</param> /// <param name="email">邮箱地址</param> /// <param name="mobile">手机号码</param> private void CheckGetUserVerifyCode(string appSign, VerifyCodeType verifyCodeType, string terminalSign, string mobile) { // 1.校验验证码类型 int codeType = verifyCodeType.GetHashCode(); // 2.校验获取验证码方式 if (string.IsNullOrWhiteSpace(mobile)) { throw new MessageException("手机号码不能为空!"); } //验证是否频繁发送 terminalSign = mobile; bool isExist = this.IsExistVerifycodeBlackList(appSign, terminalSign, ConfigUtil.VarifyCodeFailCount); if (isExist) { throw new MessageException("您操作太频繁了,请稍候再试!"); } }
public string CreatePhoneCode(int length, string phone, VerifyCodeType CodeType = VerifyCodeType.Digital) { try { string text = this.GeneralCode(length, CodeType); HiCache.Insert($"DataCache-PhoneCode-{phone}", HiCryptographer.Encrypt(text), 1200); HttpCookie httpCookie = new HttpCookie(phone + "_PhoneVerifyCookie"); httpCookie.HttpOnly = true; httpCookie.Value = HiCryptographer.Encrypt(text); httpCookie.Expires = DateTime.Now.AddMinutes(20.0); HttpContext.Current.Response.Cookies.Add(httpCookie); HiCache.Remove("smsnum" + phone); return(text); } catch (Exception ex) { Globals.WriteExceptionLog(ex, null, "CreateVerifyCode"); return(string.Empty); } }
/// <summary> /// 产生验证码,默认长度4位 /// </summary> /// <param name="length"></param> /// <param name="type">验证码类型:数字,字符,符合。默认数字</param> /// <returns></returns> public static string CreateVerifyCode(int length = 4, VerifyCodeType type = VerifyCodeType.MixVerifyCode) { string verifyCode = string.Empty; Random random = new Random(); switch (type) { case VerifyCodeType.NumberVerifyCode: verifyCode = CreateNumberVerifyCode(length); break; case VerifyCodeType.AbcVerifyCode: verifyCode = CreateAbcVerifyCode(length); break; case VerifyCodeType.MixVerifyCode: verifyCode = CreateMixVerifyCode(length); break; } return(verifyCode); }
public string CreateVerifyCode(int length, VerifyCodeType CodeType = VerifyCodeType.Digital, string openId = "") { try { string text = this.GeneralCode(length, CodeType).Trim(); if (!string.IsNullOrEmpty(openId)) { HiCache.Insert(openId, HiCryptographer.Encrypt(text), 1200); } HttpCookie httpCookie = new HttpCookie("VerifyCookie"); httpCookie.HttpOnly = true; httpCookie.Value = HiCryptographer.Encrypt(text); httpCookie.Expires = DateTime.Now.AddMinutes(20.0); HttpContext.Current.Response.Cookies.Add(httpCookie); return(text); } catch (Exception ex) { Globals.WriteExceptionLog(ex, null, "CreateVerifyCode"); return(string.Empty); } }
/// <summary> /// 加载验证码 /// </summary> /// <param name="type">验证码类型</param> /// <returns></returns> public async Task <Image> LoadVerifyCodeImage(VerifyCodeType type) { var module = "login"; var randType = "sjrand"; //为了准确起见,我们使用真正的引用页 var urlRefer = "https://kyfw.12306.cn/otn/login/init"; if (type == VerifyCodeType.SubmitOrder) { module = "passenger"; randType = "randp"; urlRefer = "https://kyfw.12306.cn/otn/confirmPassenger/initDc"; } var ctx = Session.NetClient.Create <Image>(HttpMethod.Get, string.Format("https://kyfw.12306.cn/otn/passcodeNew/getPassCodeNew?module={0}&rand={1}&{2}", module, randType, new Random().NextDouble().ToString()), urlRefer ); await ctx.SendTask(); return(ctx.Result); }
/// <summary> /// 获取验证码 /// </summary> /// <param name="mobile">手机号</param> /// <param name="verifyCodeType">验证码类型</param> /// <returns></returns> public static ResultInfo <string> GetVerifyCode(string mobile, VerifyCodeType verifyCodeType) { if (string.IsNullOrEmpty(BaseUrl)) { throw new ApplicationException("fundationApiDomain配置不能为空"); } if (string.IsNullOrWhiteSpace(mobile)) { return(new ResultInfo <string>(-1, "手机号不能为空")); } var url = string.Format("http://{0}/fundationapi/sendsms/GetVerifyCode?mobile={1}&verifyCodeType={2}", BaseUrl, mobile, (int)verifyCodeType); var resp = HttpWebResponseUtility.HttpGet(url); var jsonString = new JsonString(resp); var result = new ResultInfo <string>(); result.Error_no = jsonString.GetInt("error_no"); result.Error_info = jsonString.Get("error_info").SafeToString(); result.Data = jsonString.Get("data").SafeToString(); return(result); }
/// <summary> /// 校验获取验证码请求参数 /// </summary> /// <param name="verifyCodeType">验证码类型</param> /// <param name="email">邮箱地址</param> /// <param name="mobile">手机号码</param> private void CheckGetUserVerifyCode(string appSign, VerifyCodeType verifyCodeType, string terminalSign, string email, string mobile = "") { // 1.校验验证码类型 int codeType = (int)verifyCodeType; if (codeType <= 0) { throw new MessageException("验证码类型格式不正确!"); } // 2.校验获取验证码方式 if (string.IsNullOrWhiteSpace(email) && string.IsNullOrWhiteSpace(mobile)) { throw new MessageException("手机号码和邮箱地址不可同时为空!"); } //验证是否频繁发送 bool isExist = this.IsExistVerifycodeBlackList(appSign, terminalSign, ConfigUtil.VarifyCodeFailCount); if (isExist) { throw new MessageException("您操作太频繁了,请稍候再试!"); } }
/// <summary> /// 加载验证码 /// </summary> /// <param name="type">验证码类型</param> /// <returns></returns> public async Task<Image> LoadVerifyCodeImage(VerifyCodeType type) { var module = "login"; var randType = "sjrand"; //为了准确起见,我们使用真正的引用页 var urlRefer = "https://kyfw.12306.cn/otn/login/init"; if (type == VerifyCodeType.SubmitOrder) { module = "passenger"; randType = "randp"; urlRefer = "https://kyfw.12306.cn/otn/confirmPassenger/initDc"; } var ctx = Session.NetClient.Create<Image>(HttpMethod.Get, string.Format("https://kyfw.12306.cn/otn/passcodeNew/getPassCodeNew?module={0}&rand={1}&{2}", module, randType, new Random().NextDouble().ToString()), urlRefer ); await ctx.SendTask(); return ctx.Result; }
/// <summary> /// 产生验证码(随机产生4-6位) /// </summary> /// <param name="type">验证码类型:数字,字符,符合</param> /// <returns></returns> public static string CreateVerifyCode(VerifyCodeType type, int length = 4) { string verifyCode = string.Empty; switch (type) { case VerifyCodeType.NumberVerifyCode: verifyCode = CreateNumberVerifyCode(length); break; case VerifyCodeType.AbcVerifyCode: verifyCode = CreateAbcVerifyCode(length); break; case VerifyCodeType.MixVerifyCode: verifyCode = CreateMixVerifyCode(length); break; case VerifyCodeType.ChineseVerifyCode: verifyCode = CreateChineseVerifyCode(length); break; } return(verifyCode); }
/// <summary> /// 获取验证码 /// </summary> /// <param name="email">邮箱地址</param> /// <param name="mobile">手机号码</param> /// <returns>已有的验证码</returns> public void GetVerifyCode(string appSign, VerifyCodeType verifyCodeType, SmsFuncType tempType, string terminalSign, string email, string mobile) { // 1.校验请求参数 CheckGetUserVerifyCode(appSign, verifyCodeType, terminalSign, email, mobile); // 2.获取新验证码 string verifyCode = SingleInstance <VerifyCodeService> .Instance.BuildVerifyCode(appSign, terminalSign, email, mobile); // 3.调用发送邮件接口,发送验证码 string title = string.Empty; string content = string.Empty; EmailType emlType = EmailType.UnKnown; SMSType smsType = SMSType.UnKnown; decimal validateCodeExpire = ConfigUtil.ValidatecodeExpire / 60; switch (verifyCodeType) { case VerifyCodeType.BindEmail: { emlType = EmailType.Bind; title = "yingmei.me邮箱验证"; content = string.Format(TemplateConfigUtil.EmlDic["BindEmail"], verifyCode, validateCodeExpire); break; } case VerifyCodeType.BindMobile: { smsType = SMSType.Bind; content = string.Format(TemplateConfigUtil.EmlDic["SmsValidCode"], verifyCode, validateCodeExpire); break; } case VerifyCodeType.ModifyPwdByMobile: { smsType = SMSType.Bind; content = string.Format(TemplateConfigUtil.EmlDic["SmsValidCode"], verifyCode, validateCodeExpire); break; } case VerifyCodeType.GetPwdByMobile: { smsType = SMSType.Bind; content = string.Format(TemplateConfigUtil.EmlDic["SmsValidCode"], verifyCode, validateCodeExpire); break; } case VerifyCodeType.UpdateBindMobile: { smsType = SMSType.Bind; content = string.Format(TemplateConfigUtil.EmlDic["SmsValidCode"], verifyCode, validateCodeExpire); break; } default: { throw new MessageException("未知的验证码类型!"); } } if (!string.IsNullOrWhiteSpace(content)) { int codeType = (int)verifyCodeType; if (codeType == (int)VerifyCodeType.BindEmail) { //发送邮件(暂时没有邮件发送) //SingleInstance<EmailService>.Instance.SubmitEmail(email, title, content.ToString(), emlType); } //发送短信 if (verifyCodeType == VerifyCodeType.BindMobile || verifyCodeType == VerifyCodeType.ModifyPwdByMobile || verifyCodeType == VerifyCodeType.GetPwdByMobile || verifyCodeType == VerifyCodeType.UpdateBindMobile ) { Dictionary <string, object> parms = new Dictionary <string, object>(); parms.Add("code", verifyCode); parms.Add("code_expire", validateCodeExpire); SingleInstance <SysService> .Instance.SendSmsMessage(appSign, mobile, parms, content, smsType, tempType); } } }
/// <summary> /// 产生验证 /// </summary> /// <param name="type">验证码类型:数字,字符,符合</param> /// <returns></returns> private Bitmap CreateVerifyCode(VerifyCodeType verifyCodeType, int width, int height, int length) { string verifyCode = string.Empty; switch (verifyCodeType) { case VerifyCodeType.Number: verifyCode = this.CreateNumberVerifyCode(length); break; case VerifyCodeType.Letter: verifyCode = this.CreateLetterVerifyCode(length); break; case VerifyCodeType.Hybrid: verifyCode = this.CreateHybridVerifyCode(length); break; } Bitmap bitmap = new Bitmap(width, height); using (Graphics graphics = Graphics.FromImage(bitmap)) { Font font = new Font("Arial", 14, (FontStyle.Bold | FontStyle.Italic)); SizeF totalSizeF = graphics.MeasureString(verifyCode, font); PointF startPointF = new PointF(0, (height - totalSizeF.Height) / 2); Random random = new Random(); //随机数产生器 graphics.Clear(Color.White); //清空图片背景色 for (int i = 0; i < verifyCode.Length; i++) { Brush brush = new LinearGradientBrush(new Point(0, 0), new Point(1, 1), Color.FromArgb(random.Next(255), random.Next(255), random.Next(255)), Color.FromArgb(random.Next(255), random.Next(255), random.Next(255))); graphics.DrawString(verifyCode[i].ToString(), font, brush, startPointF); SizeF curCharSizeF = graphics.MeasureString(verifyCode[i].ToString(), font); startPointF.X += curCharSizeF.Width; brush.Dispose(); } font.Dispose(); //画图片的干扰线 for (int i = 0; i < 10; i++) { int x1 = random.Next(bitmap.Width); int x2 = random.Next(bitmap.Width); int y1 = random.Next(bitmap.Height); int y2 = random.Next(bitmap.Height); graphics.DrawLine(new Pen(Color.Silver), x1, y1, x2, y2); } //画图片的前景干扰点 for (int i = 0; i < 100; i++) { int x = random.Next(bitmap.Width); int y = random.Next(bitmap.Height); bitmap.SetPixel(x, y, Color.FromArgb(random.Next())); } graphics.DrawRectangle(new Pen(Color.Silver), 0, 0, bitmap.Width - 1, bitmap.Height - 1); //画图片的边框线 return(bitmap); } }
/// <summary> /// 验证码图片 => Bitmap /// </summary> /// <param name="verifyCode">验证码类型</param> /// <param name="width">宽</param> /// <param name="height">高</param> /// <returns>Bitmap</returns> Bitmap IVerifyCode.CreateImageVerifyCodeToBitmap(VerifyCodeType verifyCodeType, int width, int height, int length) { return(this.CreateVerifyCode(verifyCodeType, width, height, length)); }
/// <summary> /// 获取验证码 /// </summary> /// <param name="mobile">手机号码</param> /// <returns>已有的验证码</returns> public string GetVerifyCode(string appSign, string mobile, string terminalSign, VerifyCodeType verifyCodeType) { // 1.校验请求参数 CheckGetUserVerifyCode(appSign, verifyCodeType, terminalSign, mobile); // 2.获取新验证码 return(BuildVerifyCode(appSign, terminalSign, mobile)); }
public string GeneralCode(int length, VerifyCodeType CodeType = VerifyCodeType.Digital) { string text = string.Empty; Random random = new Random(); Random random2 = new Random(); while (text.Length < length) { int num = random2.Next(); char c; switch (CodeType) { case VerifyCodeType.Digital: c = (char)(48 + (ushort)(num % 10)); goto IL_01d6; case VerifyCodeType.DigitalANDLetter: { int num2 = random.Next(1, 62); c = ((num2 > 10) ? ((num2 >= 36) ? ((char)(65 + (ushort)(num % 26))) : ((char)(97 + (ushort)(num % 26)))) : ((char)(48 + (ushort)(num % 10)))); if (c != '0' && c != 'o' && c != '1' && c != '7' && c != 'l' && c != '9' && c != 'g' && c != 'I') { goto IL_01d6; } break; } case VerifyCodeType.DigitalANDLowerLetter: { int num2 = random.Next(1, 36); c = ((num2 > 10) ? ((char)(97 + (ushort)(num % 26))) : ((char)(48 + (ushort)(num % 10)))); if (c != '0' && c != 'o' && c != '1' && c != 'l' && c != '9' && c != 'g') { goto IL_01d6; } break; } case VerifyCodeType.DigitalANDUpperLetter: { int num2 = random.Next(1, 36); c = ((num2 > 10) ? ((char)(65 + (ushort)(num % 26))) : ((char)(48 + (ushort)(num % 10)))); goto IL_01d6; } case VerifyCodeType.Letter: { int num2 = random.Next(1, 52); c = ((num2 > 26) ? ((char)(65 + (ushort)(num % 26))) : ((char)(97 + (ushort)(num % 26)))); goto IL_01d6; } case VerifyCodeType.LowerLetter: c = (char)(97 + (ushort)(num % 26)); goto IL_01d6; case VerifyCodeType.UpperLetter: c = (char)(65 + (ushort)(num % 26)); goto IL_01d6; default: { c = (char)(48 + (ushort)(num % 10)); goto IL_01d6; } IL_01d6: text += c.ToString(); break; } } return(text); }
public RequireVcDlg(ServiceContext context, VerifyCodeType randType) : base(context) { RandType = randType; InitializeComponent(); }