کد کپچا در سی شارپ

ساخت کدکپچا در زبان سی شارپ

در این آموزش قصد داریم تا ضمن آشنایی با کد کپچا یا همان “تصاویر امنیتی”، نحوه ساخت آنها در زبان سی شارپ را فرا بگیریم. کد کپچا تصویری است که حاوی یک متن است که بصورت غیریکنواخت اما خوانا ترسیم شده است. ممکن است تعدادی خط یا نقطه اضافی بصورت درهم در این تصویر وجود داشته باشد. هدف از این غیریکنواخت و درهم بودن این است که متن داخل تصویر فقط توسط انسان قابل درک باشد. اگر چنین هدفی محقق شود، می توانیم از ورود روبات ها به قسمت های مهم جلوگیری کنیم. نمونه کاربرد کدکپچا را در دنیای اینترنت بسیار دیده ایم. احتمالا هنگام استفاده از دروازه پرداخت اینترنتی بانک ها با این تصاویر روبرو شده اید. یا هنگام ورود به ایمیل یا ثبت نام در یک سایت هویت شما توسط این تصاویر مشخص شده است.  کد کپچا برای تشخیص هویت استفاده می شوند. در ادامه می خواهیم با نحوه ی ساخت این تصاویر در سی شارپ آشنا شویم.  در پایان این آموزش قادر خواهیم بود تا تصاویر امنیتی مانند شکل زیر بسازیم:

کپچا

اگر برای ساخت تصویر امنیتی یک کلاس جداگانه بسازیم، متدهایی که برای ساخت تصویر امنیتی در این کلاس نیاز خواهیم داشت، عبارتند از:

  • متد رسم نقاط Random
  • متد رسم خطوط Random
  • متد ساخت عبارت Random
  • متد ترسیم عکس و قرار دادن خروجی توابع بالا در آن
  • متد اعتبارسنجی ورودی کاربر

متد رسم نقاط تصادفی در کپچا

private static Point[] GetRandomPoints()
{
Point[] points = { new Point(rand.Next(10, ۱۵۰),
rand.Next(10, ۱۵۰)), new Point(rand.Next(10, ۱۰۰), rand.Next(10, ۱۰۰)) };
return points;
}

متد رسم خطوط تصادفی در کپچا

private static void DrawRandomLines(Graphics g)
{
SolidBrush green = new SolidBrush(Color.Green);
//For Creating Lines on The Captcha
for (int i = ۰; i < ۲۰; i++)
{
g.DrawLines(new Pen(green, ۲), GetRandomPoints());
}

}

متد ساخت متن تصادفی برای کد کپچا

private static string GetRandomText()
{
StringBuilder randomText = new StringBuilder();
if (String.IsNullOrEmpty(code))
{
string alphabets = "abcdefghijklmnopqrstuvwxyz1234567890";
Random r = new Random();
for (int j = ۰; j <= ۵; j++)
{
randomText.Append(alphabets[r.Next(alphabets.Length)]);
}
code = randomText.ToString();
}
return code;
}

متد ترسیم تصویر کد کپچا

public static Image CreateImage()
{
code = GetRandomText();
Bitmap bitmap = new Bitmap(200, 50, PixelFormat.Format32bppArgb);
Graphics g = Graphics.FromImage(bitmap);
Pen pen = new Pen(Color.Yellow);
Rectangle rect = new Rectangle(0, 0, 200, 50);
SolidBrush b = new SolidBrush(Color.Black);
SolidBrush White = new SolidBrush(Color.White);
int counter = 0;
g.DrawRectangle(pen, rect);
g.FillRectangle(b, rect);
for (int i = 0; i < code.Length; i++)
{
g.DrawString(code[i].ToString(), new Font("Georgia",
۱۰ + rand.Next(14, 18)), White, new PointF(10 + counter, 10));
counter += 20;
}
DrawRandomLines(g);
g.Dispose();
return bitmap;
}

متد اعتبارسنجی ورودی کاربر

public static bool validate(string input)
{
    if (code.Equals(input))
    {
        return true;
    }
    return false;
}

موفق و پیروز باشید!
همچنین می توانید نمونه پروژه مربوط به این آموزش را دانلود نمایید:
پسورد فایل: www.myempire.ir

دریافت نمونه پروژه

در این آموزش قصد داریم تا ضمن آشنایی با کد کپچا یا همان “تصاویر امنیتی”، نحوه ساخت آنها در زبان سی شارپ را فرا بگیریم. کد کپچا تصویری است که حاوی یک متن است که بصورت غیریکنواخت اما خوانا ترسیم شده است. ممکن است تعدادی خط یا نقطه اضافی بصورت درهم در این تصویر وجود …

بررسی کلی

امتیاز کاربر: 4.08 ( 3 رای)
0

۶ دیدگاه

  1. با سلام

    خیلی ممنون، عالی بود، منظم و جم وجور
    راستی نمیشه بجای حروف انگلیسی از حروف فارسی استفاده کرد؟!

    • سلام،
      امکان استفاده از حروف فارسی وجود داره، اما باید نکات زیر رو درنظر بگیرید.
      اول اینکه در متد CreateImage فونتی که قراره متن رو ترسیم کنه باید کاراکترهای فارسی رو داشته باشه.
      دوم اینکه در متد GetRandomText باید الفبای فارسی رو به جای الفبای انگلیسی قرار بدین.
      موفق و پیروز باشید…

  2. خیلی فوق العاده بود

  3. دست تون درد نکنه خوب بود اما برای من اجرا نکرد و یه ارور داد

دیدگاهتان را ثبت کنید

آدرس ایمیل شما منتشر نخواهد شدعلامتدارها لازمند *

*

theme