2024-10-31 15:04:47 +08:00

48 lines
1.4 KiB
C#

using System;
using System.Drawing;
using System.Drawing.Imaging;
using System.IO;
public class CaptchaService
{
private string generatedCaptchaCode;
// 生成验证码图像并返回Base64字符串
public (string captchaImage, string captchaCode) GenerateCaptcha()
{
generatedCaptchaCode = GenerateRandomCode(5); // 生成5位随机字符
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);
}
}
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());
}
}