开发者社区> 轻风有道> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

改写的一个自动生成图片验证码的类asp.net(vb)

简介: 还记得以前我的BLOGS上被别人发了很多垃圾广告留言,每一个小时被发上一条,因为那时这个BLOG发留言可以直接发,别人是用机器自动发的,很是头痛,那时就叫DUDU给发留言加上验证码.DUDU动作很快,几下就搞上了,别人的机器自动发就不行了,现在就舒服多了.
+关注继续查看

还记得以前我的BLOGS上被别人发了很多垃圾广告留言,每一个小时被发上一条,因为那时这个BLOG发留言可以直接发,别人是用机器自动发的,很是头痛,那时就叫DUDU给发留言加上验证码.DUDU动作很快,几下就搞上了,别人的机器自动发就不行了,现在就舒服多了.

今天无意中看到别人写的一个自动生成验证码的程序,不过是C#的.还好看了一些时间的C#,能看懂了,为了方便,还是改写成了vb.net的类,这样存在这里,也方便以后自己好查用.
这里是生成的效果:{9AC97966-8717-421A-9D27-768E07066443}0.jpg
下面是类的代码,有一些简单的注释,能看明白了.嘿嘿!

img_a6339ee3e57d1d52bc7d02b338e15a60.gifImports System
img_a6339ee3e57d1d52bc7d02b338e15a60.gif
Imports System.Drawing.Drawing2D
img_a6339ee3e57d1d52bc7d02b338e15a60.gif
Imports System.Drawing.imaging
img_a6339ee3e57d1d52bc7d02b338e15a60.gif
Imports System.Drawing
img_a6339ee3e57d1d52bc7d02b338e15a60.gif
Imports System.Web.UI
img_a6339ee3e57d1d52bc7d02b338e15a60.gif
Imports System.IO
img_405b18b4b6584ae338e0f6ecaf736533.gifimg_1c53668bcee393edac0d7b3b3daff1ae.gif
Namespace ValidateNamespace Validate
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif    
Public Class CreatValidateNumberClass CreatValidateNumber
img_33d02437d135341f0800e3d415312ae8.gif        
'生成验证码
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif
        Public Function CreatValidateNumber()Function CreatValidateNumber(ByVal length As IntegerAs String
img_33d02437d135341f0800e3d415312ae8.gif            
Dim randNumber() As Integer = New Integer(length) {}
img_33d02437d135341f0800e3d415312ae8.gif            
Dim ValidateNumber() As Integer = New Integer(length) {}
img_33d02437d135341f0800e3d415312ae8.gif            
Dim ValidateNumberStr As String = ""
img_33d02437d135341f0800e3d415312ae8.gif            
Dim seekseek As Integer = CInt(DateTime.Now.Second)
img_33d02437d135341f0800e3d415312ae8.gif            
Dim seekrand As Random = New Random(seekseek)
img_33d02437d135341f0800e3d415312ae8.gif            
Dim beginseek = Int(seekrand.Next(0, Int32.MaxValue - length * 10000))
img_33d02437d135341f0800e3d415312ae8.gif            
Dim seeks() As Integer = New Integer(length) {}
img_33d02437d135341f0800e3d415312ae8.gif            
Dim i As Integer
img_33d02437d135341f0800e3d415312ae8.gif            
'生成起始序列值
img_33d02437d135341f0800e3d415312ae8.gif
            For i = 0 To length - 1
img_33d02437d135341f0800e3d415312ae8.gif                beginseek 
+= 10000
img_33d02437d135341f0800e3d415312ae8.gif                seeks(i) 
= beginseek
img_33d02437d135341f0800e3d415312ae8.gif            
Next
img_33d02437d135341f0800e3d415312ae8.gif            
'生成随机数字
img_33d02437d135341f0800e3d415312ae8.gif
            For i = 0 To length - 1
img_33d02437d135341f0800e3d415312ae8.gif                
Dim rand As Random = New Random(seeks(i))
img_33d02437d135341f0800e3d415312ae8.gif                
Dim pownum As Integer = 1 * Int(Math.Pow(10, length))
img_33d02437d135341f0800e3d415312ae8.gif                randNumber(i) 
= rand.Next(pownum, Int32.MaxValue)
img_33d02437d135341f0800e3d415312ae8.gif            
Next
img_33d02437d135341f0800e3d415312ae8.gif            
'抽取随机数字
img_33d02437d135341f0800e3d415312ae8.gif
            For i = 0 To length - 1
img_33d02437d135341f0800e3d415312ae8.gif                
Dim numstr As String = randNumber(i).ToString
img_33d02437d135341f0800e3d415312ae8.gif                
Dim numlength As Integer = numstr.Length
img_33d02437d135341f0800e3d415312ae8.gif                
Dim rand As New Random
img_33d02437d135341f0800e3d415312ae8.gif                
Dim numPosition As Integer = rand.Next(0, numlength - 1)
img_33d02437d135341f0800e3d415312ae8.gif                ValidateNumber(i) 
= Int32.Parse(numstr.Substring(numPosition, 1))
img_33d02437d135341f0800e3d415312ae8.gif            
Next
img_33d02437d135341f0800e3d415312ae8.gif            
'生成验证码
img_33d02437d135341f0800e3d415312ae8.gif
            For i = 0 To length - 1
img_33d02437d135341f0800e3d415312ae8.gif                ValidateNumberStr 
+= ValidateNumber(i).ToString
img_33d02437d135341f0800e3d415312ae8.gif            
Next
img_33d02437d135341f0800e3d415312ae8.gif            
Return ValidateNumberStr
img_105a1e124122b2abcee4ea8e9f5108f3.gif        
End Function

img_33d02437d135341f0800e3d415312ae8.gif        
'创建验证码图片
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif
        Public Sub CreatevalidateGraphic()Sub CreatevalidateGraphic(ByVal page As Page, ByVal validatenum As String)
img_33d02437d135341f0800e3d415312ae8.gif            
Dim image As Bitmap = New Bitmap(CInt(Math.Ceiling(validatenum.Length * 12.5)), 22)
img_33d02437d135341f0800e3d415312ae8.gif            
Dim g As Graphics = Graphics.FromImage(image)
img_33d02437d135341f0800e3d415312ae8.gif            
Try
img_33d02437d135341f0800e3d415312ae8.gif                
'生成随机生成器
img_33d02437d135341f0800e3d415312ae8.gif
                Dim random As New Random
img_33d02437d135341f0800e3d415312ae8.gif                
'清空图片背景色
img_33d02437d135341f0800e3d415312ae8.gif
                g.Clear(Color.White)
img_33d02437d135341f0800e3d415312ae8.gif                
'画图片的干扰线
img_33d02437d135341f0800e3d415312ae8.gif
                Dim i As Integer
img_33d02437d135341f0800e3d415312ae8.gif                
For i = 0 To 24
img_33d02437d135341f0800e3d415312ae8.gif                    
Dim x1 As Integer = random.Next(image.Width)
img_33d02437d135341f0800e3d415312ae8.gif                    
Dim x2 As Integer = random.Next(image.Width)
img_33d02437d135341f0800e3d415312ae8.gif                    
Dim y1 As Integer = random.Next(image.Height)
img_33d02437d135341f0800e3d415312ae8.gif                    
Dim y2 As Integer = random.Next(image.Height)
img_33d02437d135341f0800e3d415312ae8.gif                    g.DrawLine(
New Pen(Color.Silver), x1, y1, x2, y2)
img_33d02437d135341f0800e3d415312ae8.gif                
Next
img_33d02437d135341f0800e3d415312ae8.gif                
'画验证码
img_33d02437d135341f0800e3d415312ae8.gif
                Dim font As Font = New Font("Arial"12, (FontStyle.Bold And FontStyle.Italic))
img_33d02437d135341f0800e3d415312ae8.gif                
Dim brush As LinearGradientBrush = New LinearGradientBrush(New Rectangle(00, image.Width, image.Height), Color.Blue, Color.DarkRed, 1.2F, True)
img_33d02437d135341f0800e3d415312ae8.gif                g.DrawString(validatenum, font, brush, 
32)
img_33d02437d135341f0800e3d415312ae8.gif                
'画前景干扰点
img_33d02437d135341f0800e3d415312ae8.gif
                For i = 0 To 24
img_33d02437d135341f0800e3d415312ae8.gif                    
Dim x As Integer = random.Next(image.Width)
img_33d02437d135341f0800e3d415312ae8.gif                    
Dim y As Integer = random.Next(image.Height)
img_33d02437d135341f0800e3d415312ae8.gif                    image.SetPixel(x, y, Color.FromArgb(random.Next()))
img_33d02437d135341f0800e3d415312ae8.gif                
Next
img_33d02437d135341f0800e3d415312ae8.gif                
'画图片的边框线
img_33d02437d135341f0800e3d415312ae8.gif
                g.DrawRectangle(New Pen(Color.Silver), 00, image.Width - 1, image.Height - 1)
img_33d02437d135341f0800e3d415312ae8.gif                
'保存图片
img_33d02437d135341f0800e3d415312ae8.gif
                Dim stream As New MemoryStream
img_33d02437d135341f0800e3d415312ae8.gif                image.Save(stream, ImageFormat.Jpeg)
img_33d02437d135341f0800e3d415312ae8.gif                
'输出图片
img_33d02437d135341f0800e3d415312ae8.gif
                page.Response.Clear()
img_33d02437d135341f0800e3d415312ae8.gif                page.Response.ContentType 
= "image/jpeg"
img_33d02437d135341f0800e3d415312ae8.gif                page.Response.BinaryWrite(stream.ToArray())
img_33d02437d135341f0800e3d415312ae8.gif            
Catch ex As Exception
img_33d02437d135341f0800e3d415312ae8.gif            
Finally
img_33d02437d135341f0800e3d415312ae8.gif                g.Dispose()
img_33d02437d135341f0800e3d415312ae8.gif                image.Dispose()
img_33d02437d135341f0800e3d415312ae8.gif
img_33d02437d135341f0800e3d415312ae8.gif            
End Try
img_105a1e124122b2abcee4ea8e9f5108f3.gif        
End Sub

img_33d02437d135341f0800e3d415312ae8.gif
img_33d02437d135341f0800e3d415312ae8.gif
img_105a1e124122b2abcee4ea8e9f5108f3.gif    
End Class

img_05dd8d549cff04457a6366b0a7c9352a.gif
End Namespace


下面是这个类的引用一个小例子

HTML部份:

img_405b18b4b6584ae338e0f6ecaf736533.gifimg_1c53668bcee393edac0d7b3b3daff1ae.gifimg_a76e9bb6ed00cf1c9c9f4ee2f04b558b.gif@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="ValidateNumber.WebForm1"%>
img_a6339ee3e57d1d52bc7d02b338e15a60.gif
DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
img_a6339ee3e57d1d52bc7d02b338e15a60.gif
<HTML>
img_a6339ee3e57d1d52bc7d02b338e15a60.gif    
<HEAD>
img_a6339ee3e57d1d52bc7d02b338e15a60.gif        
<title>WebForm1title>
img_a6339ee3e57d1d52bc7d02b338e15a60.gif        
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
img_a6339ee3e57d1d52bc7d02b338e15a60.gif        
<meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
img_a6339ee3e57d1d52bc7d02b338e15a60.gif        
<meta name="vs_defaultClientScript" content="JavaScript">
img_a6339ee3e57d1d52bc7d02b338e15a60.gif        
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
img_a6339ee3e57d1d52bc7d02b338e15a60.gif    
HEAD>
img_a6339ee3e57d1d52bc7d02b338e15a60.gif    
<body MS_POSITIONING="GridLayout">
img_a6339ee3e57d1d52bc7d02b338e15a60.gif        
<form id="Form1" method="post" runat="server">
img_405b18b4b6584ae338e0f6ecaf736533.gifimg_1c53668bcee393edac0d7b3b3daff1ae.gif            
<FONT face="宋体">img_a76e9bb6ed00cf1c9c9f4ee2f04b558b.gif validates.CreatevalidateGraphic(Me, vali) %>FONT>
img_a6339ee3e57d1d52bc7d02b338e15a60.gif        
form>
img_a6339ee3e57d1d52bc7d02b338e15a60.gif    
body>
img_a6339ee3e57d1d52bc7d02b338e15a60.gif
HTML>
程序部份:
img_405b18b4b6584ae338e0f6ecaf736533.gifimg_1c53668bcee393edac0d7b3b3daff1ae.gifPublic Class WebForm1Class WebForm1
img_33d02437d135341f0800e3d415312ae8.gif    
Inherits System.Web.UI.Page
img_33d02437d135341f0800e3d415312ae8.gif
img_7a2b9a960ee9a98bfd25d306d55009f8.gifimg_2887d91d0594ef8793c1db92b8a1d545.gif
Web 窗体设计器生成的代码#Region " Web 窗体设计器生成的代码 "
img_33d02437d135341f0800e3d415312ae8.gif
img_33d02437d135341f0800e3d415312ae8.gif    
'该调用是 Web 窗体设计器所必需的。
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()Sub InitializeComponent()
img_33d02437d135341f0800e3d415312ae8.gif
img_105a1e124122b2abcee4ea8e9f5108f3.gif    
End Sub

img_33d02437d135341f0800e3d415312ae8.gif
img_33d02437d135341f0800e3d415312ae8.gif    
'注意: 以下占位符声明是 Web 窗体设计器所必需的。
img_33d02437d135341f0800e3d415312ae8.gif
    '不要删除或移动它。
img_33d02437d135341f0800e3d415312ae8.gif
    Private designerPlaceholderDeclaration As System.Object
img_33d02437d135341f0800e3d415312ae8.gif
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif    
Private Sub Page_Init()Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
img_33d02437d135341f0800e3d415312ae8.gif        
'CODEGEN: 此方法调用是 Web 窗体设计器所必需的
img_33d02437d135341f0800e3d415312ae8.gif
        '不要使用代码编辑器修改它。
img_33d02437d135341f0800e3d415312ae8.gif
        InitializeComponent()
img_105a1e124122b2abcee4ea8e9f5108f3.gif    
End Sub

img_33d02437d135341f0800e3d415312ae8.gif
img_105a1e124122b2abcee4ea8e9f5108f3.gif
#End Region

img_33d02437d135341f0800e3d415312ae8.gif    
Public validates As New Validate.CreatValidateNumber
img_33d02437d135341f0800e3d415312ae8.gif    
Public vali As String
img_2887d91d0594ef8793c1db92b8a1d545.gifimg_7a2b9a960ee9a98bfd25d306d55009f8.gif    
Private Sub Page_Load()Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
img_33d02437d135341f0800e3d415312ae8.gif        
'在此处放置初始化页的用户代码
img_33d02437d135341f0800e3d415312ae8.gif

img_33d02437d135341f0800e3d415312ae8.gif        vali 
= validates.CreatValidateNumber(5)
img_33d02437d135341f0800e3d415312ae8.gif        
'validate.CreatevalidateGraphic(Me, vali)
img_105a1e124122b2abcee4ea8e9f5108f3.gif
    End Sub

img_33d02437d135341f0800e3d415312ae8.gif
img_05dd8d549cff04457a6366b0a7c9352a.gif
End Class

存于此,以供它日之用,还请大家指教.

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
[.NET领域驱动设计实战系列]专题六:DDD实践案例:网上书店订单功能的实现
原文:[.NET领域驱动设计实战系列]专题六:DDD实践案例:网上书店订单功能的实现 一、引言    上一专题已经为网上书店实现了购物车的功能了,在这一专题中,将继续对网上书店案例进行完善,本专题将对网上书店订单功能的实现进行介绍,现在废话不多说了,让我们来一起看看订单功能是如何实现的吧。
1660 0
ASP.NET ashx实现无刷新页面生成验证码
现在大部分网站登陆时都会要求输入验证码,在网上也看了一些范例,现在总结一下如何实现无刷新页面生成验证码。 效果图:   实现方式: 前台: 1 2 Identifying Code: 3 4 6 8 JS: 1 2...
948 0
【Web API系列教程】1.1 — ASP.NET Web API入门
前言 HTTP不仅仅服务于web页面,同时也是构建暴露服务和数据的API的强大平台。HTTP有着简单、灵活和无处不在的特点。
1023 0
asp.net+js方式实现的幻灯图片效果展示
最近一直在出差中,由于以前政府网站项目中的一个图片幻灯不知道咋的不能用了,图片出不来,原先的方式是直接通过Adobe的插件实现的,检查了一下,没发现问题,后来干脆换了个js的,效果如下: main.
738 0
ASP.NET 生成随机验证码
我一直觉得用第三方控件生成的验证码太花了,用户体验不好,有的很难看清楚到底是什么,还是那种比较清楚一点的给人的感觉好点。    ///     /// 这个方法用来生成随机验证码    ///     private void ShowCode()    {        Random ran = new Random();        int intRandom = ran.
772 0
ASP.NET生成静态文件的一个静态类
某网友刚刚传给我的,稍微看了一下,感觉还不错吧,先记下来,备用,今天早上有段时候JAVAEYE上去好慢。不知道是不是服务器被攻击了。。呵呵。 using System;using System.
604 0
+关注
轻风有道
一年而野,二年而从,三年而通,四年而物,五年而来,六年而鬼入,七年而天成,八年而不知生、不知死
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载