Do anyone know about Base64 encoding/Decoding!
------------------
Thanks..
regards
Koya
Printable View
Do anyone know about Base64 encoding/Decoding!
------------------
Thanks..
regards
Koya
Base64 is the encryption that web browsers used to send servers
the user names and passwords when you log-in to certain web servers.
It is also used as the encryption for mail attachments on POP3 servers.
this is the source code for encoding/decoding Base64
its pretty long but here it is :)
i used it in a web server i made
use: Decode(Text to decode) and Encode(Text to encode)
[code]Public Function Decode(Base64 As String) As String
Dim WLen, Temp, Tmp2, Tmp3 As String, Z
WLen = Len(Base64)
If (WLen / 4) <> Int((WLen / 4)) Then
MsgBox "Must be in multiples of 4."
Exit Function
End If
Temp = WLen / 4
For Z = 1 To WLen Step 4
Tmp3 = Mid(Base64, Z, 4)
Decode = Decode & GoDecodeBase64(Tmp3)
Next
If InStr(1, Decode, "=") Then
Tmp3 = Len(Decode) - (Len(Decode) - InStr(1, Decode, "=") + 1)
Decode = Left(Decode, Tmp3)
End If
End Function
Public Function Encode(Base64 As String) As String
Dim WLen, Temp, Tmp2, Tmp3 As String, Z
WLen = Len(Base64)
Temp = WLen / 3
If Int(WLen / 3) - Temp Then
If InStr(1, Str(WLen / 3), ".33") Then Tmp2 = 1
If InStr(1, Str(WLen / 3), ".66") Then Tmp2 = 2
End If
If Tmp2 > 0 Then
If Tmp2 = 2 Then
Base64 = Base64 & "="
Else
Base64 = Base64 & "=="
End If
Temp = Temp + 1
End If
For Z = 1 To WLen Step 3
Tmp3 = Mid(Base64, Z, 3)
Encode = Encode & GoEncodeBase64(Tmp3)
Next
End Function
Private Function GoDecodeBase64(base64text$) As String
' from the 4 characters input, build a string = their binary equivalent values
For k = 1 To 4
Select Case Asc(Mid$(base64text$, k, 1))
Case 65
binaryStr$ = binaryStr$ & "000000"
Case 66
binaryStr$ = binaryStr$ & "000001"
Case 67
binaryStr$ = binaryStr$ & "000010"
Case 68
binaryStr$ = binaryStr$ & "000011"
Case 69
binaryStr$ = binaryStr$ & "000100"
Case 70
binaryStr$ = binaryStr$ & "000101"
Case 71
binaryStr$ = binaryStr$ & "000110"
Case 72
binaryStr$ = binaryStr$ & "000111"
Case 73
binaryStr$ = binaryStr$ & "001000"
Case 74
binaryStr$ = binaryStr$ & "001001"
Case 75
binaryStr$ = binaryStr$ & "001010"
Case 76
binaryStr$ = binaryStr$ & "001011"
Case 77
binaryStr$ = binaryStr$ & "001100"
Case 78
binaryStr$ = binaryStr$ & "001101"
Case 79
binaryStr$ = binaryStr$ & "001110"
Case 80
binaryStr$ = binaryStr$ & "001111"
Case 81
binaryStr$ = binaryStr$ & "010000"
Case 82
binaryStr$ = binaryStr$ & "010001"
Case 83
binaryStr$ = binaryStr$ & "010010"
Case 84
binaryStr$ = binaryStr$ & "010011"
Case 85
binaryStr$ = binaryStr$ & "010100"
Case 86
binaryStr$ = binaryStr$ & "010101"
Case 87
binaryStr$ = binaryStr$ & "010110"
Case 88
binaryStr$ = binaryStr$ & "010111"
Case 89
binaryStr$ = binaryStr$ & "011000"
Case 90
binaryStr$ = binaryStr$ & "011001"
Case 97
binaryStr$ = binaryStr$ & "011010"
Case 98
binaryStr$ = binaryStr$ & "011011"
Case 99
binaryStr$ = binaryStr$ & "011100"
Case 100
binaryStr$ = binaryStr$ & "011101"
Case 101
binaryStr$ = binaryStr$ & "011110"
Case 102
binaryStr$ = binaryStr$ & "011111"
Case 103
binaryStr$ = binaryStr$ & "100000"
Case 104
binaryStr$ = binaryStr$ & "100001"
Case 105
binaryStr$ = binaryStr$ & "100010"
Case 106
binaryStr$ = binaryStr$ & "100011"
Case 107
binaryStr$ = binaryStr$ & "100100"
Case 108
binaryStr$ = binaryStr$ & "100101"
Case 109
binaryStr$ = binaryStr$ & "100110"
Case 110
binaryStr$ = binaryStr$ & "100111"
Case 111
binaryStr$ = binaryStr$ & "101000"
Case 112
binaryStr$ = binaryStr$ & "101001"
Case 113
binaryStr$ = binaryStr$ & "101010"
Case 114
binaryStr$ = binaryStr$ & "101011"
Case 115
binaryStr$ = binaryStr$ & "101100"
Case 116
binaryStr$ = binaryStr$ & "101101"
Case 117
binaryStr$ = binaryStr$ & "101110"
Case 118
binaryStr$ = binaryStr$ & "101111"
Case 119
binaryStr$ = binaryStr$ & "110000"
Case 120
binaryStr$ = binaryStr$ & "110001"
Case 121
binaryStr$ = binaryStr$ & "110010"
Case 122
binaryStr$ = binaryStr$ & "110011"
Case 48
binaryStr$ = binaryStr$ & "110100"
Case 49
binaryStr$ = binaryStr$ & "110101"
Case 50
binaryStr$ = binaryStr$ & "110110"
Case 51
binaryStr$ = binaryStr$ & "110111"
Case 52
binaryStr$ = binaryStr$ & "111000"
Case 53
binaryStr$ = binaryStr$ & "111001"
Case 54
binaryStr$ = binaryStr$ & "111010"
Case 55
binaryStr$ = binaryStr$ & "111011"
Case 56
binaryStr$ = binaryStr$ & "111100"
Case 57
binaryStr$ = binaryStr$ & "111101"
Case 43
binaryStr$ = binaryStr$ & "111110"
Case 47
binaryStr$ = binaryStr$ & "111111"
End Select
Next 'k
' at this point binaryStr$ is the 24 bits in binary form
' now we need to convert it to three 8 bit characters
d% = 128 * Val(Left$(binaryStr$, 1))
d% = d% + 64 * Val(Mid$(binaryStr$, 2, 1))
d% = d% + 32 * Val(Mid$(binaryStr$, 3, 1))
d% = d% + 16 * Val(Mid$(binaryStr$, 4, 1))
d% = d% + 8 * Val(Mid$(binaryStr$, 5, 1))
d% = d% + 4 * Val(Mid$(binaryStr$, 6, 1))
d% = d% + 2 * Val(Mid$(binaryStr$, 7, 1))
d% = d% + Val(Mid$(binaryStr$, 8, 1))
Temp$ = Chr$(d%)
d% = 128 * Val(Mid$(binaryStr$, 9, 1))
d% = d% + 64 * Val(Mid$(binaryStr$, 10, 1))
d% = d% + 32 * Val(Mid$(binaryStr$, 11, 1))
d% = d% + 16 * Val(Mid$(binaryStr$, 12, 1))
d% = d% + 8 * Val(Mid$(binaryStr$, 13, 1))
d% = d% + 4 * Val(Mid$(binaryStr$, 14, 1))
d% = d% + 2 * Val(Mid$(binaryStr$, 15, 1))
d% = d% + Val(Mid$(binaryStr$, 16, 1))
Temp$ = Temp$ & Chr$(d%)
d% = 128 * Val(Mid$(binaryStr$, 17, 1))
d% = d% + 64 * Val(Mid$(binaryStr$, 18, 1))
d% = d% + 32 * Val(Mid$(binaryStr$, 19, 1))
d% = d% + 16 * Val(Mid$(binaryStr$, 20, 1))
d% = d% + 8 * Val(Mid$(binaryStr$, 21, 1))
d% = d% + 4 * Val(Mid$(binaryStr$, 22, 1))
d% = d% + 2 * Val(Mid$(binaryStr$, 23, 1))
d% = d% + Val(Right$(binaryStr$, 1))
Temp$ = Temp$ & Chr$(d%)
GoDecodeBase64 = Temp$
End Function
Private Function GoEncodeBase64(originalString$) As String
Dim deci
deci = CDec(deci)
' binaryStr$ = decimalTobinaryStr$(Asc(Left$(originalString$, 1))) & decimalTobinaryStr$(Asc(Mid$(originalString$, 2, 1))) & decimalTobinaryStr$(Asc(Right$(originalString$, 1)))
deci = Asc(Left$(originalString$, 1))
For k = 7 To 0 Step -1
If (2 ^ k) <= deci Then
binaryStr$ = binaryStr$ & "1"
deci = deci - (2 ^ k)
Else
binaryStr$ = binaryStr$ & "0"
End If
Next 'k
deci = Asc(Mid$(originalString$, 2, 1))
For k = 7 To 0 Step -1
If (2 ^ k)