BLOG main image
정민군's Blog
miniya devlog

'Language/VB'에 해당되는 글 1건

  1. 2006.10.17 VB Base64 Encoder, Decoder

VB Base64 Encoder, Decoder

Language/VB 2006. 10. 17. 21:23 by 정민군
Function Base64Encode(inData)
 'rfc1521
 '2001 Antonin Foller, PSTRUH Software, http://pstruh.cz
 Const Base64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
 Dim cOut, sOut, I
 
 'For each group of 3 bytes
 For I = 1 To Len(inData) Step 3
   Dim nGroup, pOut, sGroup
   
   'Create one long from this 3 bytes.
   nGroup = &H10000 * Asc(Mid(inData, I, 1)) + _
     &H100 * MyASC(Mid(inData, I + 1, 1)) + MyASC(Mid(inData, I + 2, 1))
   
   'Oct splits the long To 8 groups with 3 bits
   nGroup = Oct(nGroup)
   
   'Add leading zeros
   nGroup = String(8 - Len(nGroup), "0") & nGroup
   
   'Convert To base64
   pOut = Mid(Base64, CLng("&o" & Mid(nGroup, 1, 2)) + 1, 1) + _
     Mid(Base64, CLng("&o" & Mid(nGroup, 3, 2)) + 1, 1) + _
     Mid(Base64, CLng("&o" & Mid(nGroup, 5, 2)) + 1, 1) + _
     Mid(Base64, CLng("&o" & Mid(nGroup, 7, 2)) + 1, 1)
   
   'Add the part To OutPut string
   sOut = sOut + pOut
   
   'Add a new line For Each 76 chars In dest (76*3/4 = 57)
   'If (I + 2) Mod 57 = 0 Then sOut = sOut + vbCrLf
 Next
 Select Case Len(inData) Mod 3
   Case 1: '8 bit final
     sOut = Left(sOut, Len(sOut) - 2) + "=="
   Case 2: '16 bit final
     sOut = Left(sOut, Len(sOut) - 1) + "="
 End Select
 Base64Encode = sOut
End Function

Function MyASC(OneChar)
 If OneChar = "" Then MyASC = 0 Else MyASC = Asc(OneChar)
End Function


' Decodes a base-64 encoded string (BSTR type).
Function Base64Decode(ByVal base64String)
 'rfc1521
 '1999 Antonin Foller, PSTRUH Software, http://pstruh.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(Base64, thisChar) - 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
1 

카테고리

분류 전체보기 (46)
Technic (5)
Language (16)
Java (8)
ShellScript (1)
PHP (2)
DHTML (3)
VB (1)
WAP (1)
Database (8)
System (5)
Algorithm (1)
Design (1)
Tool (3)
Framework (2)
Network (1)
Utility (1)
SmartPhone (2)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

달력

«   2025/08   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

글 보관함