VB编写的验证码生成器

页面导航:首页 > 软件编程 > vb.net > VB编写的验证码生成器

VB编写的验证码生成器

来源: 作者: 时间:2016-01-15 15:10 【

验证码(CAPTCHA)是Completely AutomatedPublicTuring test to tell Computers andHumansApart(全自动区分计算机和人类的图灵测试)的缩写,是一种区分用户是计算机和人的公共全自动程序

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

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

1.界面展示

\

<喎"http://www.2cto.com/kf/ware/vc/" target="_blank" class="keylink">vcD4KPHA+Mi60+sLrz+q94qO6PC9wPgo8cD6jqDGjqcSjv+myv7fWo7q2qNLl0ru49rL6yfrR6dakwuu1xMDguq/K/TwvcD4KPHA+o6gyo6nA4MSjv+myv7fWo7o8L3A+CjxwPjwvcD4KPHA+19S2qNLl0ru49rL6yfrR6dakwuu1xLqvyv2ho7jDuq/K/dPQ0ru49rLOyv2jutHp1qTC67XEzrvK/aO7t7W72CYjMjA1NDA7zqrL5rv6svrJ+rXE0enWpMLr19a3+7Suo6zX1rf7tK7Tycr919ahorTz0LTX1sS4us3QodC019bEuNfps8mho8q508NjaHK6r8r9o6zTycvmu/qy+sn6tcRBU0NJScLrtcO1vcvmu/q1xNfWt/ujrL2ruPfOu8nPsvrJ+rXE19a3+8GsxvDAtKOs1+mzydKqsvrJ+rXE0enWpMLr19a3+7SuoaM8L3A+CjxwPjwvcD4KPHByZSBjbGFzcz0="brush:java;">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

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




Tags:

文章评论

最 近 更 新
热 点 排 行
Js与CSS工具
代码转换工具

<