49 lines
1.5 KiB
C#
49 lines
1.5 KiB
C#
using System;
|
|
using System.Drawing;
|
|
using System.Drawing.Imaging;
|
|
using System.IO;
|
|
|
|
public class CaptchaService
|
|
{
|
|
public string generatedCaptchaCode;
|
|
public int wrp = 0;
|
|
// 生成验证码图像并返回Base64字符串
|
|
public (string captchaImage, string captchaCode) GenerateCaptcha()
|
|
{
|
|
generatedCaptchaCode = GenerateRandomCode(4); // 生成5位随机字符
|
|
wrp = 2;
|
|
Bitmap bitmap = new Bitmap(100, 40);
|
|
|
|
using (Graphics g = Graphics.FromImage(bitmap))
|
|
{
|
|
g.Clear(Color.White);
|
|
using (Font font = new Font("Arial", 20))
|
|
{
|
|
g.DrawString(generatedCaptchaCode, font, Brushes.Black, 10, 10);
|
|
}
|
|
}
|
|
wrp = 1;
|
|
using (MemoryStream ms = new MemoryStream())
|
|
{
|
|
bitmap.Save(ms, ImageFormat.Png);
|
|
string base64Image = Convert.ToBase64String(ms.ToArray());
|
|
return (base64Image, generatedCaptchaCode);
|
|
}
|
|
}
|
|
|
|
// 验证用户输入的验证码
|
|
public bool ValidateCaptcha(string userInput)
|
|
{
|
|
return userInput.Equals(generatedCaptchaCode, StringComparison.OrdinalIgnoreCase);
|
|
}
|
|
|
|
// 生成随机字符
|
|
private string GenerateRandomCode(int length)
|
|
{
|
|
const string chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
|
|
Random random = new Random();
|
|
return new string(Enumerable.Repeat(chars, length)
|
|
.Select(s => s[random.Next(s.Length)]).ToArray());
|
|
}
|
|
}
|