哪位高手有,,如果有的话,请给我,谢谢了。万分感激。
解决方案 »
- 用VB写的cab包已经在网页中可以用了,但是如果改成可以用js new ActiveXObject("vb控件.oxc")?
- 请问各位高手一下,怎样用Sub和Function过程分别实现对任意一个十进制数的二进制或八进制的转换啊?
- xinliangyu(yxl) 接分5(VB IDE)
- 请教: 在DTS 能调用SQL自定义函数吗?
- Commondialog 控件用于打开文件时文件夹选择时,能否定义默认目录?
- 类似灌水机的程序如何编写??请做过的兄弟来谈谈
- 引用DLL问题:DLL已经不存在,但引用里无法删除,而且影响同名DLL但不同版本不同路径的再引用。
- 怎样将Excel表导入数据库?
- 属性框打不开,提示“类没有注册”,这是怎么回事?谁能替我解决??
- 一个问题是!我想知道为什么!Combo1的change事件!不执行!我已经把它的style=0了!也该表了值!
- 浏览文件夹,如何定义..
- 扩充话题生5角,散分
On Error GoTo acd
If Len(S) = 0 Then Exit Function
Dim Buff() As Byte
Buff = StrConv(S, vbFromUnicode)
Dim i As Long
Dim j As Byte
Dim k As Byte, m As Byte
Dim mstr As String
mstr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz"
Dim outs As String
i = UBound(Buff) + 1
outs = Space(2 * i)
Dim Temps As String
For i = 0 To UBound(Buff)
Randomize Time
j = CByte(5 * (Math.Rnd()) + 0) '
Buff(i) = Buff(i) Xor j
k = Buff(i) Mod Len(mstr)
m = Buff(i) \ Len(mstr)
m = m * 2 ^ 3 + j
Temps = Mid(mstr, k + 1, 1) + Mid(mstr, m + 1, 1)
Mid(outs, 2 * i + 1, 2) = Temps
Next
Encode = outs
Exit Function
acd:
End FunctionPublic Function Decode(ByVal S As String) As String '解密函数
On Error GoTo acd
Dim i As Long
Dim j As Byte
Dim k As Byte
Dim m As Byte
Dim mstr As String
mstr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz"
Dim t1 As String, t2 As String
Dim Buff() As Byte
Dim n As Long
n = 0
For i = 1 To Len(S) Step 2
t1 = Mid(S, i, 1)
t2 = Mid(S, i + 1, 1)
k = InStr(1, mstr, t1) - 1
m = InStr(1, mstr, t2) - 1
j = m \ 2 ^ 3
m = m - j * 2 ^ 3
ReDim Preserve Buff(n)
Buff(n) = j * Len(mstr) + k
Buff(n) = Buff(n) Xor m
n = n + 1
Next
Decode = StrConv(Buff, vbUnicode)
Exit Function
acd:
Decode = ""
End Function
Public Function Encode(ByVal S As String, password As String) As String
On Error GoTo acd
If Len(S) = 0 Then Exit Function
Dim Buff() As Byte
Buff = StrConv(S, vbFromUnicode)
Dim i As Long
Dim j As Byte
Dim k As Byte, m As Byte
Dim mstr As String
mstr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz"
Dim outs As String
i = UBound(Buff) + 1
outs = Space(2 * i)
Dim Temps As String
For i = 0 To UBound(Buff)
Randomize Time
j = CByte(5 * (Math.Rnd()) + 0)
Buff(i) = Buff(i) Xor j
k = Buff(i) Mod Len(mstr)
m = Buff(i) \ Len(mstr)
m = m * 2 ^ 3 + j
Temps = Mid(mstr, k + 1, 1) + Mid(mstr, m + 1, 1)
Mid(outs, 2 * i + 1, 2) = Temps
Next
Encode = outs
Exit Function
acd:
End Function
'解密函数
Public Function Decode(ByVal S As String, password As String) As String
If password <> "eee" Then Exit Function On Error GoTo acd
Dim i As Long
Dim j As Byte
Dim k As Byte
Dim m As Byte
Dim mstr As String
mstr = "ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789abcdefghijklmnopqrstuvwxyz"
Dim t1 As String, t2 As String
Dim Buff() As Byte
Dim n As Long
n = 0
For i = 1 To Len(S) Step 2
t1 = Mid(S, i, 1)
t2 = Mid(S, i + 1, 1)
k = InStr(1, mstr, t1) - 1
m = InStr(1, mstr, t2) - 1
j = m \ 2 ^ 3
m = m - j * 2 ^ 3
ReDim Preserve Buff(n)
Buff(n) = j * Len(mstr) + k
Buff(n) = Buff(n) Xor m
n = n + 1
Next
Decode = StrConv(Buff, vbUnicode)
Exit Function
acd:
Decode = ""
End FunctionPrivate Sub Command1_Click()
Text2.Text = Decode(Text1.Text, Text3.Text)End SubPrivate Sub Form_Load()
Text1.Text = Encode(45, "eee")
End Sub
Private Function GetCodeO(ByVal strValue As String) As String
Randomize
Dim ll As Integer
Dim AscNumber As Integer
Dim i As Integer
Dim hh As String
Dim ss As String
Dim mm As String
Dim j As Integer
Dim temp As String
Dim Temp2 As String
Dim Temp1 As String
Dim temp3 As String
Dim temp4 As String
ll = Len(strValue) '加密字符长度
If ll = 0 Then
GetCodeO = ""
Else
'**************************************
i = 1
For i = 1 To ll
AscNumber = Asc(Mid(strValue, i, 1)) '取ASC码
hh = Hex(AscNumber) '换成16进制码
If Len(hh) < 2 Then '不够二位的补0
hh = "0" & hh
End If
For j = 1 To Len(hh)
ss = Mid(hh, j, 1)
Select Case ss
Case "0"
mm = "0000"
Case "1"
mm = "0001"
Case "2"
mm = "0010"
Case "3"
mm = "0011"
Case "4"
mm = "0100"
Case "5"
mm = "0101"
Case "6"
mm = "0110"
Case "7"
mm = "0111"
Case "8"
mm = "1000"
Case "9"
mm = "1001"
Case "A"
mm = "1010"
Case "B"
mm = "1011"
Case "C"
mm = "1100"
Case "D"
mm = "1101"
Case "E"
mm = "1110"
Case "F"
mm = "1111"
End Select
temp = temp & mm
Next j
Next i
'**************************************
' Debug.Print "G", temp
Temp2 = ""
temp3 = ""
i = 1
For i = 1 To Len(temp)
If i / 2 = Int(i / 2) Then
Temp2 = Temp2 & Mid(temp, i, 1)
Else
temp3 = temp3 & Mid(temp, i, 1)
End If
Next
temp = Temp2 & temp3
'**************************************
Temp1 = Right(temp, 7)
temp = Temp1 & Left(temp, Len(temp) - 7)
Temp1 = Left(temp, Len(temp) / 2)
temp = Right(temp, Len(temp) / 2) & Temp1
Temp1 = Mid(temp, Len(temp) / 2, 2)
temp = Temp1 & temp & Temp1
'**************************************
Temp1 = ""
ss = ""
mm = ""
j = 1
For j = 1 To Len(temp) Step 4
ss = Mid(temp, j, 4)
Select Case ss
Case "0000"
mm = "F"
Case "0001"
mm = "b"
Case "0010"
mm = "2"
Case "0011"
mm = "P"
Case "0100"
mm = "V"
Case "0101"
mm = "j"
Case "0110"
mm = "W"
Case "0111"
mm = "N"
Case "1000"
mm = "q"
Case "1001"
mm = "m"
Case "1010"
mm = "7"
Case "1011"
mm = "i"
Case "1100"
mm = "d"
Case "1101"
mm = "c"
Case "1110"
mm = "L"
Case "1111"
mm = "g"
End Select
Temp1 = Temp1 & mm
Next j
temp = Temp1
'**************************************
i = 1
Temp1 = ""
For i = 1 To Len(temp)
Temp1 = Temp1 & Chr(Asc(Mid(temp, i, 1)) Xor 17)
Next i
temp = Temp1
'**************************************
i = 1
Temp1 = ""
For i = 1 To Len(temp)
Temp2 = Chr(Int(Rnd * 25))
temp3 = Chr(Asc(Mid(temp, i, 1)) Xor Asc(Temp2))
Temp1 = Temp1 & temp3 & Chr(Asc(Temp2) + 65)
Next i
'**************************************
temp = Temp1
GetCodeO = temp
End If
End Function
'解密程序 (支持中文)
'====================
Private Function GetPasswordO(ByVal temp As String) As String
On Error GoTo errH:
Dim ll As Integer
Dim i As Integer
Dim ss As String
Dim mm As String
Dim j As Integer
Dim hh As String
Dim DD As Long
Dim TT As String
Dim Temp1 As String
Dim Temp2 As String
Dim temp3 As String
'**************************************
If Len(temp) = 0 Then
GetPasswordO = ""
Else
'********************************
Temp1 = ""
i = 1
For i = 1 To Len(temp) Step 2
Temp1 = Temp1 & Chr(Asc(Mid(temp, i, 1)) Xor Asc(Mid(temp, i + 1, 1)) - 65)
Next i
temp = Temp1
'********************************
i = 1
Temp1 = ""
For i = 1 To Len(temp)
Temp1 = Temp1 & Chr(Asc(Mid(temp, i, 1)) Xor 17)
Next i
temp = Temp1
'********************************
Temp1 = ""
mm = ""
ss = ""
j = 1
For j = 1 To Len(temp)
ss = Mid(temp, j, 1)
Select Case ss
Case "F"
mm = "0000"
Case "b"
mm = "0001"
Case "2"
mm = "0010"
Case "P"
mm = "0011"
Case "V"
mm = "0100"
Case "j"
mm = "0101"
Case "W"
mm = "0110"
Case "N"
mm = "0111"
Case "q"
mm = "1000"
Case "m"
mm = "1001"
Case "7"
mm = "1010"
Case "i"
mm = "1011"
Case "d"
mm = "1100"
Case "c"
mm = "1101"
Case "L"
mm = "1110"
Case "g"
mm = "1111"
Case Else
GetPasswordO = ""
Exit Function
End Select
Temp1 = Temp1 & mm
Next j
temp = Temp1
'**************************************
temp = Left(temp, Len(temp) - 2)
temp = Right(temp, Len(temp) - 2)
Temp1 = Left(temp, Len(temp) / 2)
temp = Right(temp, Len(temp) / 2) & Temp1
Temp1 = Left(temp, 7)
temp = Right(temp, Len(temp) - 7) & Temp1
'*************************************
Temp1 = ""
Temp2 = Left(temp, Len(temp) / 2)
temp3 = Right(temp, Len(temp) / 2)
i = 1
For i = 1 To Len(Temp2)
Temp1 = Temp1 & Mid(temp3, i, 1) & Mid(Temp2, i, 1)
Next
temp = Temp1
'**************************************
ll = Len(temp)
i = 1
For i = 1 To ll Step 4
ss = Mid(temp, i, 4)
Select Case ss
Case "0000"
mm = "0"
Case "0001"
mm = "1"
Case "0010"
mm = "2"
Case "0011"
mm = "3"
Case "0100"
mm = "4"
Case "0101"
mm = "5"
Case "0110"
mm = "6"
Case "0111"
mm = "7"
Case "1000"
mm = "8"
Case "1001"
mm = "9"
Case "1010"
mm = "A"
Case "1011"
mm = "B"
Case "1100"
mm = "C"
Case "1101"
mm = "D"
Case "1110"
mm = "E"
Case "1111"
mm = "F"
End Select
hh = hh & mm
Next i
'**************************************
j = 1
While j <= Len(hh)
If Mid(hh, j, 1) < "8" Then
DD = CDec("&H" & Mid(hh, j, 2))
TT = TT & Chr(DD)
j = j + 2
Else
DD = CDec("&H" & Mid(hh, j, 4))
TT = TT & Chr(DD)
j = j + 4
End If
Wend
'**************************************
GetPasswordO = TT
End If
Exit Function
errH:
GetPasswordO = ""
End Function
Public Function StrToHex(ByVal S As String) As String
On Error Resume Next
Dim ByteArr() As Byte
ByteArr = StrConv(S, vbFromUnicode)
Dim Temps As String
Dim Temp As Byte
Dim i As Long
Dim Outs As String
For i = 0 To UBound(ByteArr)
Temp = ByteArr(i)
Temps = Hex(Temp)
Temps = right("00" + Temps, 2)
Outs = Outs + Temps
Next
StrToHex = Outs
End FunctionPublic Function HexToStr(ByVal S As String) As String
On Error Resume Next
Dim ByteArr() As Byte
Dim Temps As String
Dim Temp As Byte
Dim i As Long
Dim j As Long
j = 0
Dim Outs As String
For i = 1 To Len(S) Step 2
Temps = Mid(S, i, 2)
Temp = Val("&H" & Temps)
ReDim Preserve ByteArr(j)
ByteArr(j) = Temp
j = j + 1
Next
Outs = StrConv(ByteArr, vbUnicode)
HexToStr = Outs
End Function