热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

.net中验证码的几种常用方法

验证码功能一般是用于防止批量注册的,不少网站为了防止用户利用机器人自动注册、登录、灌水,都采用了验证码技术。所谓验证码,就是将一串随机产生

验证码功能一般是用于防止批量注册的,不少网站为了防止用户利用机器人自动注册、登录、灌水,都采用了验证码技术。所谓验证码,就是将一串随机产生的数字或字母或符号或文字,生成一幅图片, 图片里加上一些干扰象素(防止OCR),由用户肉眼识别其中的验证码信息,输入表单提交网站验证,验证成功后才能使用某项功能。

常见的验证码有如下几种:

1、纯数字验证码,一般为四位随机数字;

2、数字+字母验证码,一般从数字(0~9)和字母(A~Z和a~z)中随机抽出几个字符组成;

3、汉字验证码,相对而言,这种验证码比较少见一点,实现起来也相对复杂一些,但在不少网站中还是可以看到的;

一、纯数字验证码的实现

(1)使用随机数方式,代码如下:

View Code

1 view plaincopy to clipboardprint?
2 private String GetRandomint(int codeCount)
3 {
4 Random random = new Random();
5 string min = "";
6 string max = "";
7 for (int i = 0; i 8 {
9 min +="1";
10 max+="9";
11 }
12 return (random.Next(Convert.ToInt32(min),Convert.ToInt32(max)).ToString());
13 }
14 private String GetRandomint(int codeCount)
15 {
16 Random random = new Random();
17 string min = "";
18 string max = "";
19 for (int i = 0; i 20 {
21 min +="1";
22 max+="9";
23 }
24 return (random.Next(Convert.ToInt32(min),Convert.ToInt32(max)).ToString());
25 }

(2)使用随机组合方式,代码如下

View Code

1 view plaincopy to clipboardprint?
2 private string CreateRandomCode(int codeCount)
3 {
4 string allChar = "0,1,2,3,4,5,6,7,8,9";
5 string[] allCharArray = allChar.Split(',');
6 string randomCode = "";
7 int temp = -1;
8 Random rand = new Random();
9 for (int i = 0; i 10 {
11 if (temp != -1)
12 {
13 rand = new Random(i * temp * ((int)DateTime.Now.Ticks));
14 }
15 int t = rand.Next(9);
16 if (temp == t)
17 {
18 return CreateRandomCode(codeCount);
19 }
20 temp = t;
21 randomCode += allCharArray[t];
22 }
23 return randomCode;
24 }
25 private string CreateRandomCode(int codeCount)
26 {
27 string allChar = "0,1,2,3,4,5,6,7,8,9";
28 string[] allCharArray = allChar.Split(',');
29 string randomCode = "";
30 int temp = -1;
31 Random rand = new Random();
32 for (int i = 0; i 33 {
34 if (temp != -1)
35 {
36 rand = new Random(i * temp * ((int)DateTime.Now.Ticks));
37 }
38 int t = rand.Next(9);
39 if (temp == t)
40 {
41 return CreateRandomCode(codeCount);
42 }
43 temp = t;
44 randomCode += allCharArray[t];
45 }
46 return randomCode;
47 }

2、数字+字母验证码的实现

View Code

1 view plaincopy to clipboardprint?
2 private string CreateRandomCode(int codeCount)
3 {
4 string allChar = "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,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";
5 string[] allCharArray = allChar.Split(',');
6 string randomCode = "";
7 int temp = -1;
8 Random rand = new Random();
9 for (int i = 0; i 10 {
11 if (temp != -1)
12 {
13 rand = new Random(i * temp * ((int)DateTime.Now.Ticks));
14 }
15 int t = rand.Next(61);
16 if (temp == t)
17 {
18 return CreateRandomCode(codeCount);
19 }
20 temp = t;
21 randomCode += allCharArray[t];
22 }
23 return randomCode;
24 }
25 private string CreateRandomCode(int codeCount)
26 {
27 string allChar = "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,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";
28 string[] allCharArray = allChar.Split(',');
29 string randomCode = "";
30 int temp = -1;
31 Random rand = new Random();
32 for (int i = 0; i 33 {
34 if (temp != -1)
35 {
36 rand = new Random(i * temp * ((int)DateTime.Now.Ticks));
37 }
38 int t = rand.Next(61);
39 if (temp == t)
40 {
41 return CreateRandomCode(codeCount);
42 }
43 temp = t;
44 randomCode += allCharArray[t];
45 }
46 return randomCode;
47 }
48

 

 

转:https://www.cnblogs.com/wsl2011/archive/2012/02/09/2343534.html



推荐阅读
  • 本文深入探讨了Java多线程环境下的同步机制及其应用,重点介绍了`synchronized`关键字的使用方法和原理。`synchronized`关键字主要用于确保多个线程在访问共享资源时的互斥性和原子性。通过具体示例,如在一个类中使用`synchronized`修饰方法,展示了如何实现线程安全的代码块。此外,文章还讨论了`ReentrantLock`等其他同步工具的优缺点,并提供了实际应用场景中的最佳实践。 ... [详细]
  • 本文详细介绍了批处理技术的基本概念及其在实际应用中的重要性。首先,对简单的批处理内部命令进行了概述,重点讲解了Echo命令的功能,包括如何打开或关闭回显功能以及显示消息。如果没有指定任何参数,Echo命令会显示当前的回显设置。此外,文章还探讨了批处理技术在自动化任务执行、系统管理等领域的广泛应用,为读者提供了丰富的实践案例和技术指导。 ... [详细]
  • 在软件开发过程中,经常需要将多个项目或模块进行集成和调试,尤其是当项目依赖于第三方开源库(如Cordova、CocoaPods)时。本文介绍了如何在Xcode中高效地进行多项目联合调试,分享了一些实用的技巧和最佳实践,帮助开发者解决常见的调试难题,提高开发效率。 ... [详细]
  • 在 Linux 环境下,多线程编程是实现高效并发处理的重要技术。本文通过具体的实战案例,详细分析了多线程编程的关键技术和常见问题。文章首先介绍了多线程的基本概念和创建方法,然后通过实例代码展示了如何使用 pthreads 库进行线程同步和通信。此外,还探讨了多线程程序中的性能优化技巧和调试方法,为开发者提供了宝贵的实践经验。 ... [详细]
  • 2018年9月21日,Destoon官方发布了安全更新,修复了一个由用户“索马里的海贼”报告的前端GETShell漏洞。该漏洞存在于20180827版本的某CMS中,攻击者可以通过构造特定的HTTP请求,利用该漏洞在服务器上执行任意代码,从而获得对系统的控制权。此次更新建议所有用户尽快升级至最新版本,以确保系统的安全性。 ... [详细]
  • 本文介绍了UUID(通用唯一标识符)的概念及其在JavaScript中生成Java兼容UUID的代码实现与优化技巧。UUID是一个128位的唯一标识符,广泛应用于分布式系统中以确保唯一性。文章详细探讨了如何利用JavaScript生成符合Java标准的UUID,并提供了多种优化方法,以提高生成效率和兼容性。 ... [详细]
  • Java 中 ZonedDateTime 类的天数方法详解及示例代码 ... [详细]
  • 基于Web的Kafka管理工具Kafkamanager首次访问Web界面的详细配置指南(附图解)
    首次访问Kafkamanager Web界面时,需要对Kafka集群进行配置。这一过程相对简单,用户只需依次点击【Cluster】>【Add Cluster】,按照提示完成相关设置即可。本文将通过图文并茂的方式,详细介绍每一步的配置步骤,帮助用户快速上手Kafkamanager。 ... [详细]
  • Android 构建基础流程详解
    Android 构建基础流程详解 ... [详细]
  • 使用 ListView 浏览安卓系统中的回收站文件 ... [详细]
  • 本文详细探讨了Oracle数据库中Number和Float数据类型的特性和使用方法。通过对比分析,解释了Number类型在精度和范围上的优势,以及Float类型在处理科学计算时的灵活性。文章还介绍了Number数据类型的语法结构及其在实际应用中的最佳实践,帮助读者更好地理解和选择合适的数据类型以满足不同的业务需求。 ... [详细]
  • PHP预处理常量详解:如何定义与使用常量 ... [详细]
  • 本文探讨了利用Python实现高效语音识别技术的方法。通过使用先进的语音处理库和算法,本文详细介绍了如何构建一个准确且高效的语音识别系统。提供的代码示例和实验结果展示了该方法在实际应用中的优越性能。相关文件可从以下链接下载:链接:https://pan.baidu.com/s/1RWNVHuXMQleOrEi5vig_bQ,提取码:p57s。 ... [详细]
  • 本文总结了JavaScript的核心知识点和实用技巧,涵盖了变量声明、DOM操作、事件处理等重要方面。例如,通过`event.srcElement`获取触发事件的元素,并使用`alert`显示其HTML结构;利用`innerText`和`innerHTML`属性分别设置和获取文本内容及HTML内容。此外,还介绍了如何在表单中动态生成和操作``元素,以便更好地处理用户输入。这些技巧对于提升前端开发效率和代码质量具有重要意义。 ... [详细]
  • 如何在MySQL中选择合适的表空间以优化性能和管理效率
    在MySQL中,合理选择表空间对于提升表的管理和访问性能至关重要。表空间作为MySQL中用于组织和管理数据的一种机制,能够显著影响数据库的运行效率和维护便利性。通过科学地配置和使用表空间,可以优化存储结构,提高查询速度,简化数据管理流程,从而全面提升系统的整体性能。 ... [详细]
author-avatar
Andg在路上
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有