C#版本的混合的验证码

 

<%@ Page Language="C#" ContentType="text/html" ResponseEncoding="utf-8"  Debug="true" %>
<%@ import namespace="System"%>
<%@ import namespace="System.IO"%>
<%@ import namespace="System.Drawing"%>
<%@ import namespace="System.Drawing.Imaging"%>
<script  runat="server"> 
  private void Page_Load(object sender, System.EventArgs e){
   ValidateCode( RndNum(6) );;//测试
  }

  private void ValidateCode(string VNum) {
   Bitmap Img = null;
   Graphics g = null ;
   MemoryStream ms = null ;

   int gheight = VNum.Length*12;
   Img = new Bitmap(gheight,20);
   g = Graphics.FromImage(Img);
   Font f = new Font( "新宋体",12 );
   SolidBrush s = new SolidBrush( Color.Red );
   g.DrawString(VNum,f,s,3,3);
   ms=new MemoryStream();
   Img.Save(ms,ImageFormat.Png);
   Response.ClearContent() ;//更改http ContentType
   Response.ContentType="image/Png";
   Response.BinaryWrite(ms.ToArray());
   //回收资源
   g.Dispose();
   Img.Dispose();
   Response.End();
  }
  private string RndNum(int VcodeNum) {
   string Vchar = "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,W,X,Y,Z" ;
   string[] VcArray = Vchar.Split(',') ;
   string  VNum = "" ;//由于字符串很短,就不用StringBuilder了
   int temp = -1 ;//记录上次随机数值,尽量避免生产几个一样的随机数

   //采用一个简单的算法以保证生成随机数的不同
   Random rand =new Random();
   for ( int i = 1 ; i < VcodeNum+1 ; i++ ) {    
    if ( temp != -1) {
     rand =new Random(i*temp*unchecked((int)DateTime.Now.Ticks));
    }    
    int t =  rand.Next(35) ;
    if (temp != -1 && temp == t) {
     return RndNum( VcodeNum );
    }
    temp = t  ;
    VNum += VcArray[t];

   }
   return VNum ;
  }
</script>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值