現在、多くの Web ページではログイン時にランダムな画像が使用されており、これはハッカーによる悪意のある攻撃を防ぐ簡単かつ効果的な方法です。今日インターネットでいくつかの情報を読み、サンプルからランダムな文字列を取得し、そのランダムな文字列をセッションに保存し、ビットマップの形式でランダムなコード ピクチャを形成するという生成原理を理解しました。
成し遂げる:
名前空間を追加します
。
System.Drawing.Imaging を使用します。
System.Drawing.Drawing2D を使用します。
ページ コードを生成します
。
System.Data を使用します。
System.Configuration を使用します。
System.Collections を使用します。
System.Web を使用します。
System.Web.Security を使用します。
System.Web.UI を使用します。
System.Web.UI.WebControls を使用します。
System.Web.UI.WebControls.WebParts を使用します。
System.Web.UI.HtmlControls を使用します。
System.Drawing を使用します。
System.Drawing.Imaging を使用します。
System.Drawing.Drawing2D を使用して
public 部分クラス getRandImg : System.Web.UI.Page
{
protected void Page_Load(オブジェクト送信者, EventArgs e)
{
//ランダムなコード画像を生成する
SetValidateCode();
//生成されたページはキャッシュに保存されません
Response.Cache.SetNoStore();
}
//認証コードを設定する
プライベート void SetValidateCode()
{
// 新しいビットマップを作成する
ビットマップ newBitmap = 新しいビットマップ(
71、
23、
PixelFormat.Format32bppArgb
);
//ビットマップから描画画面を取得
グラフィックス g = Graphics.FromImage(newBitmap);
//乱数ジェネレータ
ランダム r = 新しいランダム();
//描画画面をクリア
g.クリア(色.白);
//スクリーン線干渉を描画
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(新しいペン(
Color.FromArgb(r.Next())),
×1、
y1、
×2、
y2
);
}
//スクリーンポイント干渉を描画
for (int i = 0; i < 100; i++)
{
int x = r.Next(newBitmap.Width);
int y = r.Next(newBitmap.Height);
newBitmap.SetPixel(
×、
そう、
Color.FromArgb(r.Next())
);
}
// ランダムな文字列を取得します(長さは 5 桁)
文字列値 = GenerateRandom(5);
//ランダムな文字列をセッションに代入する
セッション["RandCode"] = 値;
//画像表示フォントスタイルを定義
フォント font = 新しいフォント(
「エリアル」、
14、
FontStyle.Bold
);
ランダム rr = 新しいランダム();
int yy = rr.Next(1, 4);
//画像ブラシを表示するためのランダムな文字列を定義します
LinearGradientBrush ブラシ = new LinearGradientBrush(
新しい四角形(0, 0, 71, 23),
カラー.レッド、
カラー.ブルー、
1.2f、
真実
);
g.DrawString(値, フォント, ブラシ, 2, yy);
g.DrawRectangle(new Pen(
カラー.シルバー)、
0、
0、
70、
22
);
System.IO.MemoryStream ms = 新しい System.IO.MemoryStream();
newBitmap.Save(ms, ImageFormat.Gif);
//画像を出力する
Response.ClearContent();
Response.ContentType = "画像/gif";
Response.BinaryWrite(ms.ToArray());
}
//定数セット
プライベート静的 char[] 定数 ={
'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」
};
//ランダムな文字列を生成する
パブリック静的文字列 GenerateRandom(int Length)
{
System.Text.StringBuilder newRandom = new System.Text.StringBuilder(36);
ランダム rd = 新しいランダム();
for (int i = 0; i < 長さ; i++)
{
newRandom.Append(定数[rd.Next(36)]);
}
newRandom.ToString() を返します。
}
、
IMAGE コントロールは次のように記述されます:
<asp:Image ID="Image1" ImageUrl="~/getRandImg.aspx" runat="server" />
サンプル コード: http://www.cnblogs .com /hekui/archive/2007/01/06/613609.html