Silverlight验证码

原著:Jeremy Likness 

URLhttp://www.codeproject.com/Articles/42000/Silverlight-Captcha-Example.aspx

本文URLhttp://www.cnblogs.com/Rockay/archive/2010/05/03/1726743.html

源码:http://files.cnblogs.com/Rockay/SilverlightCaptcha.rar

 

 

Silverlight,由于其强大的文本、图形操作能力和强大的相互调用通过使用脚本DOM,似乎是一个完美的正验证码引擎。

验证码是一种通过回复测试用来确定一个信任度,确定最终用户是真正的人,而不是“机器人”。例如你在论坛上、注册表单,提交留言和其他地方看到的的验证码,都可能受到脚本机器的攻击。通常,一个验证码涉及到播放声音或显示一个扭曲的图象,人类能够识别,但模式匹配和/或光学字符识别(OCR)技术却很难准确的破译。由于测试是由计算机发出来测试一个人,它常常被称为反向测试(反向测试是由人类设计的,用来测试计算机)。

验证码最关键的是,这也使得很难,如果不是不可能,脚本软件确定挑战的答案。 Asirra验证器是一个随机显示猫和狗图像的例子。用户被要求通过点击确定哪支是猫。这对人来说是很容易,但这个测试是非常困难的计算机算法。

某天我正在编码,它告诉我silverlight能很完美的实现验证器。它非常容易和简单的文本操作和模糊图形图像,更远的是,它的输出不是一个一个机器人可以解析的简单位图。相反,它是一个交互式脚本插件用来识别图像,它必须有它自己的Silverlight引擎,能够扫描和识别Silverlight的渲染。

我开始编写一个实际例子。我刻意保持它的基本 ,以便让你读的时候有兴趣和机会扩展和增加功能。

第一步是创建一个要使用的简单的验证类。

 

 1  // ======================================================================
 2  //
 3  //         Copyright (C) 2010-2011 Rockay.Lau
 4  //         All rights reserved
 5  //         
 6  //         CLR版本:            4.0.30319.1
 7  //         新建项输入的名称: CaptchaViewModel
 8  //         机器名称:            ROCKAY
 9  //         命名空间名称:      SilverlightCaptcha,MVVM
10  //         文件名:              CaptchaViewModel
11  //         当前系统时间:      5/3/2010 7:53:48 PM
12  //
13  //         当前登录用户名:   Administrator
14  //         创建年份:           2010
15  //
16  //         created by Theo at  5/3/2010 7:53:48 PM
17  //          http://Rockay.cnblogs.com
18  //
19  // ======================================================================
20  using  System;
21  using  System.Windows.Browser;
22 
23  namespace  SilverlightCaptcha.MVVM
24  {
25       ///   <summary>
26       ///  captcha视图模型
27       ///   </summary>
28      [ScriptableType]
29       public   class  CaptchaViewModel
30      {
31           ///   <summary>
32           ///  客户端引用key
33           ///   </summary>
34           private   const   string  CAPTCHA_KEY  =   " SilverCaptcha " ;
35 
36           ///   <summary>
37           ///  数组
38           ///   </summary>
39           private   static   readonly   char [] _charArray  =   " ABCDEFGHJKLMNPRSTUVWXYZ23456789刘其超小笨蛋 " .ToCharArray();
40 
41           ///   <summary>
42           ///  captcha文本
43           ///   </summary>
44           public   string  CaptchaText {  get set ; }
45 
46           ///   <summary>
47           ///  构造验证码
48           ///   </summary>
49           public  CaptchaViewModel()
50          {
51               char [] captcha  =   new   char [ 8 ];
52              Random random  =   new  Random();
53               for  ( int  x  =   0 ; x  <  captcha.Length; x ++ )
54              {
55                  captcha[x]  =  _charArray[random.Next(_charArray.Length)];
56              }
57 
58              CaptchaText  =   new   string (captcha);
59              HtmlPage.RegisterScriptableObject(CAPTCHA_KEY,  this );
60          }
61 
62           ///   <summary>
63           ///  Returns true if ,based on the response,the user appears to the human
64           ///   </summary>
65           ///   <param name="challengeResponse"> the response to the captcha challenge </param>
66           ///   <returns> 匹配成功返回true,反之为匹配失败 </returns>
67           public   bool  IsHuman( string  challengeResponse)
68          {
69               return  challengeResponse.Trim().ToUpper().Equals(CaptchaText);
70          }
71      }
72  }
73 

 

 

 

下面就是最终的效果:

 

错误时

Silverlight验证码

正确时

Silverlight验证码

你可能感兴趣的:(silverlight)