Enc-Base64位加密程序源代码下[分享]
'接着上次的代码往下 mInByte(2) = myBArray(i + 2) mInByte(3) = myBArray(i + 3) Base64DecodeByte mInByte, mOutByte, 4 End If tmpArray(j * 3) = mOutByte(0) tmpArray(j * 3 + 1) = mOutByte(1) tmpArray(j * 3 + 2) = mOutByte(2) j = j + 1 Next i Base64Decode = BinaryToString(tmpArray) End Function Private Sub Base64DecodeByte(mInByte() As Byte, mOutByte() As Byte, ByteNum As Integer) Dim tByte As Byte Dim i As Integer ByteNum = 0 For i = 0 To 3 If mInByte(i) >= Asc("A") And mInByte(i) <= Asc("Z") Then mInByte(i) = mInByte(i) - Asc("A") ElseIf mInByte(i) >= Asc("a") And mInByte(i) <= Asc("z") Then mInByte(i) = mInByte(i) - Asc("a") + 26 ElseIf mInByte(i) >= Asc("0") And mInByte(i) <= Asc("9") Then mInByte(i) = mInByte(i) - Asc("0") + 52 ElseIf mInByte(i) = Asc("+") Then mInByte(i) = 62 ElseIf mInByte(i) = Asc("/") Then mInByte(i) = 63 Else '"=" ByteNum = ByteNum + 1 mInByte(i) = 0 End If Next i '取前六位 tByte = (mInByte(0) And &H3F) * 4 + (mInByte(1) And &H30) / 16 '0的六位和1的前两位 mOutByte(0) = tByte tByte = (mInByte(1) And &HF) * 16 + (mInByte(2) And &H3C) / 4 '1的后四位和2的前四位 mOutByte(1) = tByte tByte = (mInByte(2) And &H3) * 64 + (mInByte(3) And &H3F) mOutByte(2) = tByte '2的后两位和3的六位 End Sub Private Function BinaryToString(ByVal BinaryStr As Variant) As String '二进制转换为字符串 Dim lnglen As Long Dim tmpBin As Variant Dim strC As String Dim skipflag As Long Dim i As Long skipflag = 0 strC = "" If Not IsNull(BinaryStr) Then lnglen = LenB(BinaryStr) For i = 1 To lnglen If skipflag = 0 Then tmpBin = MidB(BinaryStr, i, 1) If AscB(tmpBin) > 127 Then strC = strC & Chr(AscW(MidB(BinaryStr, i + 1, 1) & tmpBin)) skipflag = 1 Else strC = strC & Chr(AscB(tmpBin)) End If Else skipflag = 0 End If Next End If BinaryToString = strC End Function Private Function StringToBinary(ByVal VarString As String) As Variant '字符串转成二进制 Dim strBin As Variant Dim varchar As Variant Dim varasc As Long Dim varlow, varhigh Dim i As Long strBin = "" For i = 1 To Len(VarString) varchar = Mid(VarString, i, 1) varasc = Asc(varchar) If varasc < 0 Then varasc = varasc + 65535 End If If varasc > 255 Then varlow = Left(Hex(Asc(varchar)), 2) varhigh = Right(Hex(Asc(varchar)), 2) strBin = strBin & ChrB("&H" & varlow) & ChrB("&H" & varhigh) Else strBin = strBin & ChrB(AscB(varchar)) End If Next StringToBinary = strBin End Function
|