Results 1 to 3 of 3

Thread: Base64

  1. #1

    Thread Starter
    Addicted Member
    Join Date
    Jul 1999
    Location
    Ottawa
    Posts
    155

    Post

    Do anyone know about Base64 encoding/Decoding!

    ------------------
    Thanks..
    regards
    Koya

  2. #2
    Member FirePoweR's Avatar
    Join Date
    Apr 1999
    Posts
    32

    Post

    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)

  3. #3
    Junior Member
    Join Date
    Jan 1999
    Posts
    26

    Post


Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  



Click Here to Expand Forum to Full Width