验证码

亦凉 2021-11-24 01:36 435阅读 0赞

<% @ WebHandler Language = “ C# “ Class = “ code “ %>

using System;
using System.Web;
using System.Drawing;
using System.Drawing.Imaging;
using System.Drawing.Drawing2D;
using System.Web.SessionState;

public class code : IHttpHandler, IRequiresSessionState
{
public void ProcessRequest (HttpContext context) {
CreateCheckCodeImage(GenCode( 4 ), context);
}

  1. /\*\*/
  2. /// <summary>
  3. /// '产生随机字符串
  4. /// </summary>
  5. /// <param name="num"> 随机出几个字符 </param>
  6. /// <returns> 随机出的字符串 </returns>
  7. private string GenCode( int num)
  8. \{
  9. // string str = "的一是在不了有和人这中大为上个国我以要他时来用们生到作地于出就分对成会可主发年动同工也能下过子说产种面而方后多定行学法所民得经十三之进着等部度家电力里如水化高自二理起小物现实加量都两体制机当使点从业本去把性好应开它合还因由其些然前外天政四日那社义事平形相全表间样与关各重新线内数正心反你明看原又么利比或但质气第向道命此变条只没结解问意建月公无系军很情者最立代想已通并提直题党程展五果料象员革位入常文总次品式活设及管特件长求老头基资边流路级少图山统接知较将组见计别她手角期根论运农指几九区强放决西被干做必战先回则任取据处队南给色光门即保治北造百规热领七海口东导器压志世金增争济阶油思术极交受联什认六共权收证改清己美再采转更单风切打白教速花带安场身车例真务具万每目至达走积示议声报斗完类八离华名确才科张信马节话米整空元况今集温传土许步群广石记需段研界拉林律叫且究观越织装影算低持音众书布复容儿须际商非验连断深难近矿千周委素技备半办青省列习响约支般史感劳便团往酸历市克何除消构府称太准精值号率族维划选标写存候毛亲快效斯院查江型眼王按格养易置派层片始却专状育厂京识适属圆包火住调满县局照参红细引听该铁价严";
  10. // char\[\] chastr = str.ToCharArray();
  11. string \[\] source = \{ " 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 " , " \# " , " $ " , " % " , " & " , " @ " \};
  12. string code = "" ;
  13. Random rd = new Random();
  14. int i;
  15. for (i = 0 ; i < num; i \++ )
  16. \{
  17. code \+= source\[rd.Next( 0 , source.Length)\];
  18. // code += str.Substring(rd.Next(0, str.Length), 1);
  19. \}
  20. return code;
  21. \}
  22. /\*\*/
  23. /// <summary>
  24. /// 生成图片(增加背景噪音线、前景噪音点)
  25. /// </summary>
  26. /// <param name="checkCode"> 随机出字符串 </param>
  27. private void CreateCheckCodeImage( string checkCode, HttpContext context)
  28. \{
  29. if (checkCode.Trim() == "" || checkCode == null )
  30. return ;
  31. context.Session\[ " Code " \] = checkCode; // 将字符串保存到Session中,以便需要时进行验证
  32. System.Drawing.Bitmap image = new System.Drawing.Bitmap(( int )(checkCode.Length \* 14 ), 20 );
  33. Graphics g = Graphics.FromImage(image);
  34. try
  35. \{
  36. // 生成随机生成器
  37. Random random = new Random();
  38. // 清空图片背景色
  39. g.Clear(Color.White);
  40. // 画图片的背景噪音线
  41. int i;
  42. for (i = 0 ; i < 25 ; i \++ )
  43. \{
  44. int x1 = random.Next(image.Width);
  45. int x2 = random.Next(image.Width);
  46. int y1 = random.Next(image.Height);
  47. int y2 = random.Next(image.Height);
  48. g.DrawLine( new Pen(Color.Silver), x1, y1, x2, y2);
  49. \}
  50. Font font = new System.Drawing.Font( " Arial " , 12 , System.Drawing.FontStyle.Bold);
  51. System.Drawing.Drawing2D.LinearGradientBrush brush = new System.Drawing.Drawing2D.LinearGradientBrush( new Rectangle( 0 , 0 , image.Width, image.Height), Color.Blue, Color.BlueViolet, 1.2F , true );
  52. g.DrawString(checkCode, font, brush, 2 , 2 );
  53. // 画图片的前景噪音点
  54. g.DrawRectangle( new Pen(Color.Silver), 0 , 0 , image.Width \- 1 , image.Height \- 1 );
  55. System.IO.MemoryStream ms = new System.IO.MemoryStream();
  56. image.Save(ms, System.Drawing.Imaging.ImageFormat.Gif);
  57. context.Response.ClearContent();
  58. context.Response.ContentType = " image/Gif " ;
  59. context.Response.BinaryWrite(ms.ToArray());
  60. \}
  61. catch
  62. \{
  63. g.Dispose();
  64. image.Dispose();
  65. \}
  66. \}
  67. public bool IsReusable \{
  68. get \{
  69. return false ;
  70. \}
  71. \}

}

转载于:https://www.cnblogs.com/jueban/archive/2008/01/21/1047601.html

发表评论

表情:
评论列表 (有 0 条评论,435人围观)

还没有评论,来说两句吧...

相关阅读

    相关 验证

    验证码的验证是我们登陆网页时经常进行的操作,我也做了一个简单的验证码,包括颜色以及噪线等等 @RequestMapping(value = "/Frame/Verif

    相关 验证

    1、需求      在访问登录页面时,需要生产验证码。从而防止用户使用程序恶意登录。 2、代码实现      步骤1:修改登录页面,确定验证码图片显示的位置 !

    相关 验证

    验证码 google验证码kaptcha Java验证码 patchca 验证码工具类 google验证码kaptcha [https://bl

    相关 验证---短信验证

    最近自学了短信的验证码实现。以下是自己用的一种方法实现的完整的过程。 短信验证登陆(前端+后台) 1、前端填写手机号以及点击触发,以电话号码为参数调用发送验证登录短信方法并