给你一个加密的函数
Private Function XorOut(ByVal strNum As Integer, ByVal strText As String) As String
Dim i As Integer
Dim XorValue1 As Short
Dim strResult1 As String
Dim strResult As String
Dim ss As String
'XorValue1 = Asc(strText)
For i = 1 To Len(strText)
XorValue1 = Asc(Mid(strText, i, 1))
ss = CStr(XorValue1)
While Len(ss) < 4
ss = "0" + ss
End While
strResult = strResult + ss
Next
While Len(strResult) > 0
ss = Microsoft.VisualBasic.Left(strResult, 4)
ss = Chr(CInt(ss) + strNum)
strResult1 = strResult1 + ss
strResult = Microsoft.VisualBasic.Right(strResult, Len(strResult) - 4)
End While
XorOut = strResult1
End Function
解密也是同样的道理!
我有一个:大家来分析下,可加密也可解密。但生成的加密字符串有其它字符
Private Function XorOut(ByRef strNum As String, ByRef strText As String) As String
Dim i As Integer
Dim XorValue1 As Short
Dim XorValue2 As Short
Dim strResult As String
For i = 1 To Len(strText)
XorValue1 = Asc(Mid(strText, i, 1))
XorValue2 = Asc(Mid(strNum, (i Mod Len(strNum)) + 1, 1))
Next
XorOut = strResult
End Function
加密时每一个字符换成四位,解密时每四位换成一个字符,长度肯定是一样的!
当然每一个加密字符我们都规定长度,不足的时候,用有规律的字符来补充
是肯定可以的!
还要说一下我上面的函数,由于是刚刚想到而改的。所以贴的时候贴错了
函数应该改成下面的形式,当FLAG为flase时是加密,FLAG为ture时是解密;当然反过来也可以,不过要注意一下上下限,如0减一个数字为负,这时应该怎么控制等!还要自己去完善,我只能给的是一个方法。
Private Function XorOut(ByVal strNum As Integer, ByVal strText As String,optinal byval flag as boolean=flase) As String
Dim i As Integer‘用来获取每个字符
Dim XorValue1 As Short’用来获得每个字符的ASCII码
Dim strResult1 As String‘用来取得最终返回结果
Dim strResult As String‘每个字符用4位ASCII码代替
Dim ss As String’取得每个字符的四位ASCII码
For i = 1 To Len(strText)‘得到strText的ASCII码
XorValue1 = Asc(Mid(strText, i, 1))
ss = CStr(XorValue1)
While Len(ss) < 4
ss = "0" + ss
End While
strResult = strResult + ss
Next
While Len(strResult) > 0’取得strText用每个字符用4位ASCII码代替的ASCII码并加密!
ss = Microsoft.VisualBasic.Left(strResult, 4)
If flag = False Then
ss = Chr(CInt(ss) + strNum)‘把字符的ASCII码加上一个固定值并求出它的字符形式
Else
ss = Chr(CInt(ss) - strNum)‘把字符的ASCII码减上一个固定值并求出它的字符形式
End If
'ss = Chr(CInt(ss) + strNum)‘把字符的ASCII码加上一个固定值并求出它的字符形式
strResult1 = strResult1 + ss
strResult = Microsoft.VisualBasic.Right(strResult, Len(strResult) - 4)
End While
XorOut = strResult1
End Function
Private Function XorOut(ByVal strNum As Integer, ByVal strText As String) As String
Dim i As Integer‘用来获取每个字符
Dim XorValue1 As Short’用来获得每个字符的ASCII码
Dim strResult1 As String‘用来取得最终返回结果
Dim strResult As String‘每个字符用4位ASCII码代替
Dim ss As String’取得每个字符的四位ASCII码
For i = 1 To Len(strText)‘得到strText的ASCII码
XorValue1 = Asc(Mid(strText, i, 1))
ss = CStr(XorValue1)
While Len(ss) < 4
ss = "0" + ss
End While
strResult = strResult + ss
Next
While Len(strResult) > 0’取得strText用每个字符用4位ASCII码代替的ASCII码并加密!
ss = Microsoft.VisualBasic.Left(strResult, 4)
If flag = False Then
ss = Chr(CInt(ss) + strNum)‘把字符的ASCII码加上一个固定值并求出它的字符形式
Else
ss = Chr(CInt(ss) - strNum)‘把字符的ASCII码减上一个固定值并求出它的字符形式
End If
'ss = Chr(CInt(ss) + strNum)‘把字符的ASCII码加上一个固定值并求出它的字符形式
strResult1 = strResult1 + ss
strResult = Microsoft.VisualBasic.Right(strResult, Len(strResult) - 4)
End While
XorOut = strResult1
End Function
我在vb.net上已经通过!
补充一下!
只能对数字和字母加密!
Private Function XorOut(ByVal strNum As Integer, ByVal strText As String) As String
中的strNum要固定的,这样才能按同样的方法来解密!
strText 为要加密的类容
如:
Dim ss As String
ss = XorOut(1, "fasfd")
MsgBox(ss)
即可以给“fasfd”加密!