怎么给密码加密,有现成的简单的加码函数更佳。
解决方案 »
- 请问如何将38265.69259259 转化成日期时间?
- 奇怪啊
- 在(vb+access2000)中日期在数据库中保存错误,怎样解决!
- 用哪个api函数可以获得系统的颜色数。
- 只有188分了,冒险一问!!!!! Active Report 打印问题
- 请问用ADO怎么样对access数据库进行压缩,最好提供源代码,谢谢!
- FTP上传问题,错误号12003,如何解决?
- 用VB调用Webservice,dll注册问题
- DEPHI引用怎么用VB实现
- 请问各位大虾,在一个文本框怎么实现“复制”“剪切”和“粘贴”的。
- 怎样把字符串 拷贝到内存啊。是用 copytoclipboard???试了不行。。在线等。
- 一个安装Visual Studio 的问题,希望得到回应!!!
加密函数(支持中文)
======================
Public Function GetCode(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 temp1 As String
Dim temp2 As String
Dim temp3 As String
Dim temp4 As String
ll = Len(STRValue)If ll = 0 Then
GetCode = ""
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
'**************************************
' Debug.Print "A", temp
i = 1
temp1 = ""
For i = 1 To Len(temp) temp1 = temp1 & Chr(Asc(Mid(temp, i, 1)) Xor 17) Next i temp = temp1
'**************************************
' Debug.Print "B", temp
i = 1
temp1 = ""
For i = 1 To Len(temp)
' temp2 = Chr(Int(Rnd * 25) + 65)
'
' If (Asc(Mid(temp, i, 1)) Xor Asc(temp2)) > 127 Then
' temp3 = Chr(Asc(Mid(temp, i, 1)) Xor Asc(temp2) - 127 + 32)
' temp4 = "a"
' ElseIf (Asc(Mid(temp, i, 1)) Xor Asc(temp2)) < 32 Then
' temp3 = Chr(Asc(Mid(temp, i, 1)) Xor Asc(temp2) + 32)
' temp4 = "b"
' Else
' temp3 = Chr(Asc(Mid(temp, i, 1)) Xor Asc(temp2))
' temp4 = "c"
' End If
' temp1 = temp1 & temp3 & temp2 & temp4
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 ' Debug.Print "C", temp
GetCode = temp
End IfEnd Function
解密函数
=========================
Public Function GetPassword(ByVal temp As String) As String
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
GetPassword = ""
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
GetPassword = ""
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
'**************************************
GetPassword = TT
End IfEnd Function