public IActionResult Index(string key) { int number = 6, fontSize = 16, height = 32; if (Request.Query.TryGetValue("n", out var qs) && int.TryParse(qs, out var value)) { number = value; } if (Request.Query.TryGetValue("s", out qs) && int.TryParse(qs, out value)) { fontSize = value; } if (Request.Query.TryGetValue("h", out qs) && int.TryParse(qs, out value)) { height = value; } using var ms = VerifierHelper.Create(out var code, number, fontSize, height); Response.Cookies.Append(key, Cores.Hashed(code), new CookieOptions { Expires = DateTimeOffset.Now.AddMinutes(3) }); Response.Body.Dispose(); return(File(ms.ToArray(), @"image/png")); }
/// <summary> /// 判断验证码。 /// </summary> /// <param name="key">当前唯一键。</param> /// <param name="code">验证码。</param> /// <returns>返回判断结果。</returns> public bool IsCodeValid(string key, string code) { if (string.IsNullOrEmpty(code) || !Request.Cookies.TryGetValue(key, out var value)) { return(false); } code = Cores.Hashed(code); return(string.Equals(value, code, StringComparison.OrdinalIgnoreCase)); }
/// <summary> /// 加密密码。 /// </summary> /// <param name="userName">用户名称。</param> /// <param name="password">未加密的密码。</param> /// <returns>返回加密后的密码。</returns> public static string Hashed(string userName, string password) { userName = userName.Trim().ToUpper(); password = password.Trim(); return(Cores.Hashed($"{userName}:{password}")); }