Hướng dẫn viết chương trình Captcha để bảo mật ứng dụng bằng Csharp

Xem: 296    Tải: 0   Thảo luận: 0   Mục: C / C++ / MFC   Lĩnh vực: Khác

0 điểm   ( 0 đánh giá ) File đã được kiểm thử


Hướng dẫn viết Captcha để phòng chống tấn công tự động đăng nhập, để bảo mật hệ thống. Bài viết này mình xin hướng dẫn các bạn các bước tạo Captcha trong Csharp.

- Bước 1: Dùng hàm Random tạo ra một số ngẫu nhiên.

- Bước 2: Ta sử dụng thuật toán mã hóa MD5 số ngẫu nhiên, để thành một chuỗi gồm số và chữ

- Bước 3: Ta cắt chuỗi mã hóa MD5, ở ví dụ này mình sử dụng 6 ký tự để tạo Captcha

- Bước 4: Dùng thư viện Drawing để chuyển chuỗi ngẫu nhiên thành hình ảnh.

- Bước 5: Tạo thêm hiệu ứng cho hình ảnh, nhằm chống các chương trình đọc được Captcha (Ví dụ: như bài Convert Hình ảnh sang text).

Bây giờ ta bắt đầu thực hiên code ứng dụng:

- Đầu tiên ta cần import thư viện để mã hóa số ngẫu nhiên thành MD5.

using System.Security.Cryptography;

- Khai báo biến global chuỗi Captcha

private string captchaText;

- Viết hàm tạo chuỗi Captcha ngẫu nhiên

public String randomString()
{
            Random rnd = new Random();
            int number = rnd.Next(10000, 99999);           
            string text = md5(number.ToString());
            text = text.ToUpper();
            text = text.Substring(0, 6);
            return text;
 
}

- Viết hàm mã hóa MD5

public static byte[] encryptData(String data)
{
            System.Security.Cryptography.MD5CryptoServiceProvider md5Hasher = new System.Security.Cryptography.MD5CryptoServiceProvider();
            byte[] hashedBytes;
            System.Text.UTF8Encoding encoder = new System.Text.UTF8Encoding();
            hashedBytes = md5Hasher.ComputeHash(encoder.GetBytes(data));
            return hashedBytes;
}
public static string md5(String data)
{
            return BitConverter.ToString(encryptData(data)).Replace("-","").ToLower();
}

- Bước tiếp ta viết hàm chuỗi chuỗi thành hình ảnh và tạo hiệu ứng cho hình ảnh xong gán vào Panel

private Bitmap drawImage(string txt, int w, int h)
 {
            Bitmap bt = new Bitmap(w, h);
            Graphics g = Graphics.FromImage(bt);
            SolidBrush sb = new SolidBrush(Color.White);
            g.FillRectangle(sb, 0, 0, bt.Width, bt.Height);
            System.Drawing.Font font = new System.Drawing.Font("Tahoma", 30);
            sb = new SolidBrush(Color.Blue);
            g.DrawString(txt, font, sb, bt.Width/2 - (txt.Length/2)*font.Size, (bt.Height/2)-font.Size );
            // Tạo hiệu ứng cho captcha
            // vẽ dấu chấm
            int count = 0;
            Random rand = new Random();
            while(count<1000)
            {
                sb = new SolidBrush(Color.YellowGreen);
                g.FillEllipse(sb, rand.Next(0, bt.Width), rand.Next(0, bt.Height), 4, 2);
                count++;
            }
            count = 0;
            // vẽ đường gạch ngang
            while (count < 25)
            {
                g.DrawLine(new Pen(Color.Pink), rand.Next(0, bt.Width), rand.Next(0, bt.Height), rand.Next(0, bt.Width), rand.Next(0, bt.Height));
                count++;
            }
            // End tạo hiệu ứng
            return bt;
}

- Viết hàm cho nút Reset tạo mã Captcha mới

private void Reset()
 {
            captchaText = this.randomString();         
            textBox1.Text = "";
            // vẽ captcha lên panel 1
            panel1.BackgroundImage = drawImage(captchaText, panel1.Width, panel1.Height);
 
}

- Viết sự kiện cho form load.

private void Form1_Load(object sender, EventArgs e)
 {
            Reset();
 }

- Viết sự kiện cho nút kiểm tra chuỗi nhập vào có đúng với mã Captcha mình vừa tạo không

{
            if (textBox1.Text == captchaText)
            {
                MessageBox.Show("Bạn đã nhập chính xác!");
            }
            else
            {
                MessageBox.Show("Bạn đã nhập không chính xác!");
            }
}

Chúc các bạn thành công.

Hướng dẫn viết chương trình Captcha để bảo mật ứng dụng bằng Csharp

Hướng dẫn viết chương trình Captcha để bảo mật ứng dụng bằng Csharp Đăng ngày 18-08-2016  Hướng dẫn viết Captcha để phòng chống tấn công tự động đăng nhập, để bảo mật hệ thống. Bài viết này mình xin hướng dẫn các bạn các bước tạo Captcha trong Csharp. 5/10 296

Thảo luận:

Để bình luận bạn phải đăng nhập thành viên.

File tương tự

Files cùng mục

 

File tải nhiều nhất

Megacode.vn - Thư viện mã nguồn chia sẻ, tải file cho cộng đồng
Copyright © 2013-2016. All rights reserved. Bản quyền thuộc VinaGon
Địa chỉ: Số 38 Hàng Bè, Hàng Bạc, Hoàn Kiếm, Hà Nội.
Văn phòng giao dịch: Phòng 28, Tầng 6, HH1A Linh Đàm, Hoàng Mai, Hà Nội
Email: info@vinagon.com | Website: www.vinagon.com | Điện thoại: (+844) 6. 32.979.36;
logo megacode

Megacode đã đăng ký với Bộ Công Thương
Thư viện mã nguồn mở lớn nhất Việt Nam.



Hỗ trợ khách hàng trên Megacode
Hỗ trợ kỹ thuật cho thành viên:
Tổng đài: (+84) 246. 32.979.36
Số di động (Hotline): 0969.091.265
Thời gian làm việc:
Sáng: 8h-12h; Chiều: 13h30-17h30
(Nghỉ chiều T7, CN và các ngày lễ, tết)
Chat với Megacode
https://www.facebook.com/megacodevn