国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

ASP.NET隨機碼生成示例

2019-11-18 16:45:16
字體:
來源:轉載
供稿:網友

現在很多網頁登陸的時候都使用了隨機圖片的方式,是一種簡單、有效的防止黑客惡意攻擊的手段。今天看了一些網上的資料,明白其生成原理:從樣本中,獲取隨機字符串,隨機字符串保存進session,并以位圖的方式形成隨機碼圖片。

實現:
添加命名空間

using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;
生成頁代碼

using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;

public partial class getRandImg : System.Web.UI.Page
{
    PRotected void Page_Load(object sender, EventArgs e)
    {
        //生成隨機碼圖片
        SetValidateCode();
        //生成頁面不保存到cache
        Response.Cache.SetNoStore();
    }

    //設置驗證碼
    private void SetValidateCode()
    {
        //新建位圖
        Bitmap newBitmap = new Bitmap(
                                        71,
                                        23,
                                        PixelFormat.Format32bppArgb
                                     );
        //從位圖獲得繪圖畫面
        Graphics g = Graphics.FromImage(newBitmap);
        //隨機數生成器
        Random r = new Random();
        //繪圖畫面清空
        g.Clear(Color.White);
        //繪圖畫面劃線干擾
        for (int i = 0; i < 50; i++)
        {
            int x1 = r.Next(newBitmap.Width);
            int x2 = r.Next(newBitmap.Width);
            int y1 = r.Next(newBitmap.Height);
            int y2 = r.Next(newBitmap.Height);
            g.DrawLine(new Pen(
                                Color.FromArgb(r.Next())),
                                x1,
                                y1,
                                x2,
                                y2
                              );
        }
        //繪圖畫面點數干擾
        for (int i = 0; i < 100; i++)
        {
            int x = r.Next(newBitmap.Width);
            int y = r.Next(newBitmap.Height);
            newBitmap.SetPixel(
                                x,
                                y,
                                Color.FromArgb(r.Next())
                              );
        }
        //獲得隨機字符串(5位長度)
        string value = GenerateRandom(5);
        //隨機字符串賦值給Session
        Session["RandCode"] = value;
        //定義圖片顯示字體樣式
        Font font = new Font(
                               "Arial",
                               14,
                               FontStyle.Bold
                            );
        Random rr = new Random();
        int yy = rr.Next(1, 4);
        //定義隨機字符串顯示圖片刷子
        LinearGradientBrush brush = new LinearGradientBrush(
                                                              new Rectangle(0, 0, 71, 23),
                                                              Color.Red,
                                                              Color.Blue,
                                                              1.2f,
                                                              true
                                                           );
        g.DrawString(value, font, brush, 2, yy);
        g.DrawRectangle(new Pen(
                                  Color.Silver),
                                  0,
                                  0,
                                  70,
                                  22
                                );
        System.IO.MemoryStream ms = new System.IO.MemoryStream();
        newBitmap.Save(ms, ImageFormat.Gif);
        //輸出圖片
        Response.ClearContent();
        Response.ContentType = "image/gif";
        Response.BinaryWrite(ms.ToArray());
    }

    //常量集
    private static char[] constant ={
                                        '0','1','2','3','4','5','6','7','8','9',
                                        'a','b','c','d','e','f','g','h','i','j',
                                        'k','l','m','n','o','p','q','r','s','t',
                                        'u','v','w','x','y','z'
                                    };


    //生成隨機字符串
    public static string GenerateRandom(int Length)
    {
        System.Text.StringBuilder newRandom = new System.Text.StringBuilder(36);
        Random rd = new Random();
        for (int i = 0; i < Length; i++)
        {
            newRandom.Append(constant[rd.Next(36)]);
        }
        return newRandom.ToString();
    }
}

使用隨機圖片的頁面,IMAGE控件的寫法如下:

<asp:Image ID="Image1" ImageUrl="~/getRandImg.aspx" runat="server" />

示例代碼:http://www.survivalescaperooms.com/Files/heekui/RandCode.rar

http://www.survivalescaperooms.com/heekui/archive/2007/01/06/613609.html


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 西充县| 乌什县| 松潘县| 百色市| 武乡县| 孝义市| 浮山县| 玉田县| 迭部县| 上林县| 朝阳县| 巴南区| 杭锦旗| 广灵县| 彭山县| 萨迦县| 新晃| 宝应县| 河间市| 分宜县| 恭城| 寿阳县| 富宁县| 宾川县| 巴东县| 壤塘县| 东阳市| 广平县| 江安县| 万安县| 承德县| 丰都县| 苏州市| 通化县| 竹山县| 广元市| 鄂州市| 安乡县| 韶山市| 溧阳市| 左贡县|