Base64 decode VBS function (vb decoder algorithm), source code
ActiveX RegEdit.   ActiveX User account Manager   Pure-ASP Upload
Export MDB/DBF from ASP   Active LogFile   WebChecker   ActiveX/ASP Multi Dictionary object
 See 
 also 
 IISTracer, real-time IIS monitor and logging tool.
 Huge ASP file upload with progress bar. 



Do you like this article?
Please, rate it
and write review!
Rated:
by Aspin.com users
What do you think?
 Top messages
 4.5.2002 9:16:43 
 Send an email from ASP (WSH) using VBSscript, CDONTS and Outlook. (nbsp;ASP / ASP.NetWSHVBScriptEmail)
 22.3.2003 19:18:41 
 Read and write SQL image data, store binary file to sql table. (nbsp;WSHDatabaseConversionVBScript)
 12.6.2003 9:14:29 
 Download multiple files in one http request (nbsp;File & data transferVBScript)

 Base64 decode VBS function (vb decoder algorithm), source code 

 Areas>Languages>VBScript
 Areas>ASP / ASP.Net>Functions>Conversion
 Areas>ASP / ASP.Net>Functions>http
      This article contains a full VBS source code of a Base64 decode function (base64 decoder). You can use the function, for example, to decode basic http authentication info - username and password, or to decode incomming emails.
      

      Base64Decode VBS function can only work with small amount of data - VBS does not enable to work with buffers to improve performance. Consumed processor time rapidly grows with source data length (by square). Please use Base64 property of ByteArray object (ScriptUtilities library, C++ COM object, comercial) if you want to work with large data. ByteArray lets you also work with codepage (charset) conversions and provides binary file access and binary-to-string conversion. ScriptUtilities is also available with source code.
      See also:

  • Base64 encode VBS function - reverse encoding function.
  • Online Base64 decoder and encoder - realtime http sample to encode/decode Base64 texts and binary files.
  • Online Base16 (hex string) decoder and encoder - similar sample for hexstring (samples for SQL command with binary and image fields)
          Next table contains consumed processor time of this VBS code (Base64Encode) and C++ (Base64) on Duron 700 processor. You can see that VBS function is usable for maximum of 50-100 kB.

     Source
     size [B] 
     Procesor time [ms], Encode   Procesor time [ms], Decode 
     VBS  C++ Base64   VBS  C++ Base64 
    100 B 2.2  0.04  2.3  0.03 
    1 kB 22  0.06  23  0.10 
    5 kB 116  0.20  120  0.42 
    10 kB 248  0.37  255  0.82 
    20 kB 855  1.00  744  1.90 
    50 kB 6.6 s  0.003 s  6.4 s  0.004 s 
    100 kB 36 s  0.006 s  24 s  0.010 s 
    500 kB ~1000 s  0.032 s  ~700 s  0.050 s 
    1 MB ~5000 s  0.068 s  ~3500 s  0.110 s 
          
    ' Decodes a base-64 encoded string (BSTR type).
    ' 1999 - 2004 Antonin Foller, http://www.motobit.com
    ' 1.01 - solves problem with Access And 'Compare Database' (InStr)
    Function Base64Decode(ByVal base64String)
      'rfc1521
      '1999 Antonin Foller, Motobit Software, http://Motobit.cz
      Const Base64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
      Dim dataLength, sOut, groupBegin
      
      'remove white spaces, If any
      base64String = Replace(base64String, vbCrLf, "")
      base64String = Replace(base64String, vbTab, "")
      base64String = Replace(base64String, " ", "")
      
      'The source must consists from groups with Len of 4 chars
      dataLength = Len(base64String)
      If dataLength Mod 4 <> 0 Then
        Err.Raise 1, "Base64Decode", "Bad Base64 string."
        Exit Function
      End If
    
      
      ' Now decode each group:
      For groupBegin = 1 To dataLength Step 4
        Dim numDataBytes, CharCounter, thisChar, thisData, nGroup, pOut
        ' Each data group encodes up To 3 actual bytes.
        numDataBytes = 3
        nGroup = 0
    
        For CharCounter = 0 To 3
          ' Convert each character into 6 bits of data, And add it To
          ' an integer For temporary storage.  If a character is a '=', there
          ' is one fewer data byte.  (There can only be a maximum of 2 '=' In
          ' the whole string.)
    
          thisChar = Mid(base64String, groupBegin + CharCounter, 1)
    
          If thisChar = "=" Then
            numDataBytes = numDataBytes - 1
            thisData = 0
          Else
            thisData = InStr(1, Base64, thisChar, vbBinaryCompare) - 1
          End If
          If thisData = -1 Then
            Err.Raise 2, "Base64Decode", "Bad character In Base64 string."
            Exit Function
          End If
    
          nGroup = 64 * nGroup + thisData
        Next
        
        'Hex splits the long To 6 groups with 4 bits
        nGroup = Hex(nGroup)
        
        'Add leading zeros
        nGroup = String(6 - Len(nGroup), "0") & nGroup
        
        'Convert the 3 byte hex integer (6 chars) To 3 characters
        pOut = Chr(CByte("&H" & Mid(nGroup, 1, 2))) + _
          Chr(CByte("&H" & Mid(nGroup, 3, 2))) + _
          Chr(CByte("&H" & Mid(nGroup, 5, 2)))
        
        'add numDataBytes characters To out string
        sOut = sOut & Left(pOut, numDataBytes)
      Next
    
      Base64Decode = sOut
    End Function
    
    


          Next sample is a simple ASP page, which does not enable anonymous users (without username and password), but users with any username and any password are alowed.
    <%
    Dim UID, PWD
    GetUser UID, PWD
    If UID = "" Then
    'or If Not HasAccess(UID, PWD) Then
      Response.Status = "401 Access Denied"
      Response.Write "Some page with info about user names And registration"
    End If
    
    Sub GetUser(LOGON_USER, LOGON_PASSWORD)
      Dim UP, Pos, Auth
      Auth = Request.ServerVariables("HTTP_AUTHORIZATION")
      LOGON_USER = ""
      LOGON_PASSWORD = ""
      If LCase(Left(Auth, 5)) = "basic" Then
        UP = Base64Decode(Mid(Auth, 7))
        Pos = InStr(UP, ":")
        If Pos > 1 Then
          LOGON_USER = Left(UP, Pos - 1)
          LOGON_PASSWORD = Mid(UP, Pos + 1)
        End If
      End If
    End Sub
    %>
    
          There is no good idea to allow access with any username/password. But you can write your own function which lets you authenticate usernames/passwords against database.
     
  •  

    See also for 'Base64 decode VBS function (vb decoder algorithm), source code' article:

         Quoted-printable decode VBScript function. This article contains a short function for quoted printable decoding, using CDO.Message object.
         Quoted-printable encode VBScript function. This article contains a short function for quoted printable encoding, using CDO.Message object.
         Base64 encode VBS function (vb encoder algorithm), source code Source of VBS (ASP) function that lets you encode source data (binary or string) to a base64 encoded string.

    If you like this page, please include next link on your pages:
    <A
     Href="http://www.motobit.com/tips/detpg_Base64/"
     Title="Source of VBS (ASP) function that
      enables decode base64 encoded strings."
    >Base64 decode VBS function (vb decoder algorithm), source code</A>

         IISTracer - IIS ISAPI real-time monitor IISTracer is a real-time monitoring tool for Microsoft IIS, which will show/log you what is happenning on IIS server right now. It let's you reveal problems with long-running scripts (.asp, .cgi, cfm...), hang-up states and low resource situations and lets you stop long-running requests (uploads/downloads).      ActiveX User account Manager - Set of simple objects for creating, deleting, and managing user accounts, groups, servers and domains in the Windows NT environment.
         Active log file - Hi-performance text file logging for ASP/VBS/VBA applications. Lets you create daily/weekly/monthly log files with variable number of logged values and extra timing and performance info.      ActiveX windows registry editor - Intuitive, easy to use COM interface to windows registry. Set of classes to read/enumerate/modify windows registry keys and values from ASP, VBS and T-SQL.
         ActiveX/ASP Multi Dictionary object - Free-threaded hi-speed dictionary algorithm with unique/nonunique keys (map/multimap). Connect to another dictionary object in the same process. Lock and Unlock methods to synchronize tasks (application scope). Share ASP Application/Session objects.      Export DBF/MDB from ASP - Conversion from recordset to MDB/DBF. Direct binary output of MDB or DBF files from ASP pages with one row of code.
         Pure-ASP upload - lets you upload files using Pure ASP VBS code (using multipart/form-data and input type=file).      ByteArray - Works with safearray binary data (VT_UI1 | VT_ARRAY) - save/restore binary data from disk, find, work with code pages, convert to string/hexstring(SQL).
         WebChecker - Checks http, https, ftp and gopher internet connections in regular intervals. Lets you monitor web site functionality (uptime). Enables restart or notification on problems.      HTTPLog ISAPI filter - Lets you log incomming/outgoing http header and document data to separate files. Monitor of IIS service input/output.

    © 1996 – 2008 Antonin Foller, PSTRUH Software, e-mail help@pstruh.cz