ورود

View Full Version : سوال: decoding algoritm



error500
یک شنبه 14 مهر 1387, 23:18 عصر
سلام به همه دوستان

يه الگوريتم برای ديکود کردن رو يکی از دوستان واسه من خلاصه فرستاده اما
من قسمت اول رو متوجه شدم اما قسمت دوم اين الگوريتم رو نفهميدم
اگه دوستان لطف کنن توضيح بدن ما هم در جريان قرار بگيريم يا تيکه کد اون رو اينجا بيارن ممنون ميشم
اين هم کل برنامه که اون دوست مختصر برای من فرستاده


...
...
'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)))
...
...

و در آخر
...
For k = 1 To Len(pstrXORThis)
strTempC = Mid(pstrXORThis, k, 1)
For M = 1 To Len (pstrXORWithThis)
strTempC = strXORC(strTempC, Mid(pstrXORWithThis, M, 1))
Next
strTemp = strTemp & strTempC
Next
...
که تيکه اول ميشه

Function Base64Decode(ByVal base64String)
'rfc1521
'1999 Antonin Foller, Motobit Software, http://Motobit.cz
Const Base64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwx yz0123456789+/"
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


اما من تيکه دوم رو نفهميدم چيکار ميکنه
از دوستان اگه کسی رهنمايی کنه ممنون ميشم