vb.net版中文验证码

首先要修改一下配置,C#中又checked和unchedked检查整数溢出处理
但是VB.NET中没办法,溢出即报错,唯一处理方法是
VB.net菜单:项目   -->   XXX   属性...   -->   配置   -->   优化   -->   选中“移除整数溢出检查”复选框


 1Function RndStr() As String
 2        Dim gb As System.Text.Encoding = System.Text.Encoding.GetEncoding("gb2312")
 3        Dim bytes As Object() = CreateRegionCode(4)
 4        Dim str1 As String = gb.GetString(DirectCast(Convert.ChangeType(bytes(0), GetType(Byte())), Byte()))
 5        Dim str2 As String = gb.GetString(DirectCast(Convert.ChangeType(bytes(1), GetType(Byte())), Byte()))
 6        Dim str3 As String = gb.GetString(DirectCast(Convert.ChangeType(bytes(2), GetType(Byte())), Byte()))
 7        Dim str4 As String = gb.GetString(DirectCast(Convert.ChangeType(bytes(3), GetType(Byte())), Byte()))
 8        Dim txt As String = (str1 & str2 & str3 & str4)
 9    End Function

10
11    Function CreateRegionCode(ByVal strlength As IntegerAs Object()
12        Dim rBase As String() = New String() {"0""1""2""3""4""5""6""7""8""9""a""b""c""d""e""f"}
13        Dim rnd As New Random
14        Dim bytes As Object() = New Object(strlength - 1) {}
15        Dim i As Integer = 0
16        Do While (i < strlength)
17            Dim r2 As Integer
18            Dim r4 As Integer
19            Dim r1 As Integer = rnd.Next(1114)
20            Dim str_r1 As String = rBase(r1).Trim
21            rnd = New Random(r1 * DateTime.Now.Ticks + i)
22            If (r1 = 13Then
23                r2 = rnd.Next(07)
24            Else
25                r2 = rnd.Next(0&H10)
26            End If
27            Dim str_r2 As String = rBase(r2).Trim
28            Dim r3 As Integer = New Random((r2 * DateTime.Now.Ticks) + i).Next(10&H10)
29            Dim str_r3 As String = rBase(r3).Trim
30            rnd = New Random((r3 * DateTime.Now.Ticks) + i)
31            Select Case r3
32                Case 10
33                    r4 = rnd.Next(1&H10)
34                    Exit Select
35                Case 15
36                    r4 = rnd.Next(015)
37                    Exit Select
38                Case Else
39                    r4 = rnd.Next(0&H10)
40                    Exit Select
41            End Select
42            Dim str_r4 As String = rBase(r4).Trim
43            Dim byte1 As Byte = Convert.ToByte((str_r1 & str_r2), &H10)
44            Dim byte2 As Byte = Convert.ToByte((str_r3 & str_r4), &H10)
45            Dim str_r As Byte() = New Byte() {byte1, byte2}
46            bytes.SetValue(str_r, i)
47            i += 1
48        Loop
49        Return bytes
50    End Function
posted @ 2007-04-06 11:04 BoyLee 阅读(375) 评论(0)  编辑 收藏 所属分类: Asp.Net

标题  
姓名  
主页
Email (只有博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2007-07-24 10:12 编辑过
 
另存  打印