• VB编写的验证码生成器


          验证码(CAPTCHA)是“Completely AutomatedPublicTuring test to tell Computers andHumansApart”(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机和人的公共全自动程序。由于计算机无法解答CAPTCHA的问题,所以回答出问题的用户就可以被认为是人类。使用验证码,可以防止:恶意破解密码、刷票、论坛灌水,有效防止某个黑客对某一个特定注册用户用特定程序暴力破解方式进行不断的登陆尝试。

    对于验证码,我们已经司空见惯了,大家想不想自己编写一个验证码生成器,应用在我们的程序中?下面我给大家介绍一个VB编写的验证码生成器。

    1.界面展示


     

    2.代码详解:

    (1)模块部分:定义一个产生验证码的类函数

    (2)类模块部分:

     

    自定义一个产生验证码的函数。该函数有一个参数:验证码的位数;返回值为随机产生的验证码字符串,字符串由数字、大写字母和小写字母组成。使用chr函数,由随机产生的ASCII码得到随机的字符,将各位上产生的字符连起来,组成要产生的验证码字符串。

     

    Public Function MakeKey(ByVal Bt As Integer) As String
    Dim I As Integer  '表示字符串的第几位
    Dim m As Integer  '表示该位上随机产生字符的ASCII
    '随机产生字符
    Randomize Timer '用当前的时间作为种子来产生一个随机整数
    
    While I <> Bt
         Select Case Int(3 * Rnd + 1) '产生1~3之间的数字,表示3类字符
                Case 1                '0~9之间的数字 ASCII 范围为:48~57
                        m = Int(10 * Rnd + 48)
                Case 2                'a~z之间的字符 ASCII 范围为:97~122
                        m = Int(26 * Rnd + 97)
                Case 3                'A~Z之间的字符 ASCII 范围为:65~90
                        m = Int(26 * Rnd + 65)
         End Select
         I = I + 1
         MakeKey = MakeKey & Chr(m)
    Wend
    End Function


    自定义用来检验产生的验证码SourStr与输入的验证码ObjStr 是否一致的函数,该函数有三个参数,分别是SourStr 、ObjStr和BorS。首先判断产生的验证码与输入的验证码位数是否相等,然后再检查字符串的内容。SourStr和ObjStr为string型;BorS为Boolean型,当其为真表示忽略大小写,为否则要求输入的验证码与产生的验证码一模一样,区分大小写。函数返回值为是否相等。

     

    Public Function StringEqu(ByVal SourStr As String, ByVal ObjStr As String, ByVal BorS As Boolean) As Boolean
    
    Dim I As Integer  '字符串的第几位
    I = 1
    
    '长度不相等
    If Len(SourStr) <> Len(ObjStr) Then
       StringEqu = False
       Exit Function
    End If
    
    If BorS = False Then  '不忽略大小写
       If SourStr = ObjStr Then
          StringEqu = True
       Else
          StringEqu = False
       End If
    Else                  '忽略大小写
       While I <> Len(SourStr) + 1
            If Asc(Mid$(SourStr, I, 1)) = Asc(Mid$(ObjStr, I, 1)) + 32 Or _
               Asc(Mid$(SourStr, I, 1)) = Asc(Mid$(ObjStr, I, 1)) - 32 Or _
               Asc(Mid$(SourStr, I, 1)) = Asc(Mid$(ObjStr, I, 1)) Then
               StringEqu = True
            Else
               StringEqu = False
            End If
            I = I + 1
       Wend
    End If
    End Function


    (3)主窗体部分:

    点击产生验证码按钮,调用类函数Makekey生成验证码。

     

    Private Sub cmdshow_Click()
        txtInput.Text = ""
        lblShow.Caption = mysecuritycode.MakeKey(4)   '显示生成的验证码,四位
        txtInput.SetFocus
    End Sub


    在验证码输入框中输入字符后,点击确定,调用类函数StringEqu验证输入的验证码是否正确。

     

    Private Sub cmdok_Click()
        Dim a As Boolean
        a = mysecuritycode.StringEqu(lblShow.Caption, txtInput.Text, 1)  '第三个参数非零,表示忽略大小写
        If a Then
            MsgBox "验证码输入正确!", vbInformation, "成功"
        Else
            MsgBox "输入错误,请重新输入!", vbCritical, "失败"
            txtInput.SelStart = 0
            txtInput.SelLength = Len(txtInput)
            txtInput.SetFocus
        End If
    End Sub

    赶快尝试一下吧!让我们的程序更安全,上档次。



  • 相关阅读:
    xhEditor struts2实现图片上传
    xhEditor入门基础
    jQuery全屏插件Textarea Fullscreen
    jQuery幻灯片插件Skippr
    jQuery跳房子插件hopscotch
    合理配置SQLSERVER内存
    浅谈SQL Server 对于内存的管理
    SQL Server 临时表和表变量系列之选择篇
    SQLTest系列之INSERT语句测试
    转:表变量与临时表的优缺点
  • 原文地址:https://www.cnblogs.com/fuhaots2009/p/3471543.html
Copyright © 2020-2023  润新知