当前位置:首页 > 网络编程 > WEB编程 > ASP.net >  ASP.NET随机码生成示例

 ASP.NET随机码生成示例

点击次数:19 次 发布日期:2008-11-26 11:33:59 作者:源代码网
源代码网推荐      现在很多网页登陆的时候都使用了随机图片的方式,是一种简单、有效的防止黑客恶意攻击的手段。今天看了一些网上的资料,明白其生成原理:从样本中,获取随机字符串,随机字符串保存进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.cnblogs.com/Files/heekui/RandCode.rar
源代码网推荐  
源代码网推荐  http://www.cnblogs.com/heekui/archive/2007/01/06/613609.html
源代码网推荐  
源代码网推荐    做人要厚道,请注明转自酷网动力(www.ASPCOOL.COM)。
源代码网推荐


源代码网供稿.
网友评论 (0)
会员中心
网络编程
本站推荐
网络编程之精华