Newsgroup: it.comp.lang.visual-basic
Titolo: [Dal sito comune] clsCrypto... Si ma (come) funziona?

Ciao a tutti...
Premetto che questa mail prima di postarla qui l'ho inviata a Zanna (come
specificato nel sito comune), ma non essendo lui l'autore, per un errore sul
sito, mi ha sugerito di postare qui, cosi' eventualmente l'autore (o
qualcuno di voi) mi potra' aiutare...
Ho scaricato la classe per "criptare tramite le api" (clsCrypto.zip)
presente sul sito comune perche' stavo cercando qualcosa che mi permettesse
di poter
codificare e decodificare in UUEncode dei file da poi inviare via e-mail...
Per provare questa classe, e soprattutto vedere se va bene per quello che mi
serve, ho fatto un semplicissimo programmino con un bottone e un file
eseguibile:
Option Explicit
Private Class As New clsCrypto
Private Sub Command1_Click()
Dim UUEncoded As String, bin As String, inPath As String
inPath = "c:\TEST.exe"
Open inPath For Binary Access Read As 1 Len = 4096
bin = Input$(LOF(1), 1)
Close 1
While InStr(inPath, "\") > 0
    inPath = Mid$(inPath, InStr(inPath, "\") + 1)
Wend
UUEncoded = "begin 666 " & inPath & vbCrLf
UUEncoded = UUEncoded & Class.UUEncode(bin)
UUEncoded = UUEncoded & "`" & vbCrLf
UUEncoded = UUEncoded & "end" & vbCrLf
UUEncoded = UUEncoded & vbCrLf
Set File = Fso.CreateTextFile("c:\TEST.uue")
File.Write UUEncoded
File.Close
Set Class = Nothing
Set File = Nothing
End Sub
Come si puo' notare nel codice, ho aggiunto la parte iniziale e finale
necessari per completare l'inizio e la fine di un file UUEncode da inviare
tramite E-Mail...
Risultato: Il file test.uue NON funziona, o meglio risulta corrotto...
Sono io che sbaglio qualcosa o sto' usando la classe sbagliata?
Spero che qualcuno possa aiutarmi...
Ciao ;^)=
--
Massimo "RedFoxy" Ciccio'
Web Master di Quantum Leap: 
http://ql.programmazione.it

codificare e decodificare in UUEncode dei file da poi inviare via e-mail...
Non riesco a caricare il sc per provare la clsCrypto, 
sicche' ti copio sotto la firma una funzione
(che _non_ e' mia) per trattare i file con UUEncode.
Con i file di testo funziona, eventualmente incontrassi delle difficolta'
facci sapere.
-- 
ciao, hal
%%%%%%%%%%%%%%%%%%%%%%
Public Function UUEncodeFile(strFilePath As String) As String
Dim intFile As Integer     'file handler
Dim intTempFile As Integer 'temp file
Dim lFileSize As Long      'size of the file
Dim strFileName As String  'name of the file
Dim strFileData As String  'file data chunk
Dim lEncodedLines As Long  'number of encoded lines
Dim strTempLine As String  'temporary string
Dim i As Long              'loop counter
Dim j As Integer           'loop counter
Dim strResult As String
'
'Get file name
strFileName = Mid$(strFilePath, InStrRev(strFilePath, "\") + 1)
'
'Insert first marker: "begin 664 ..."
strResult = "begin 664 " + strFileName + vbLf
'
'Get file size
lFileSize = FileLen(strFilePath)
lEncodedLines = lFileSize \ 45 + 1
'
'Prepare buffer to retrieve data from
'the file by 45 symbols chunks
strFileData = Space(45)
'
intFile = FreeFile
'
Open strFilePath For Binary As intFile
For i = 1 To lEncodedLines
    'Read file data by 45-bytes cnunks
    '
    If i = lEncodedLines Then
        'Last line of encoded data often is not
        'equal to 45, therefore we need to change
        'size of the buffer
        strFileData = Space(lFileSize Mod 45)
    End If
    'Retrieve data chunk from file to the buffer
Get intFile, , strFileData
    'Add first symbol to encoded string that informs
    'about quantity of symbols in encoded string.
    'More often "M" symbol is used.
strTempLine = Chr(Len(strFileData) + 32)
    '
    If i = lEncodedLines And (Len(strFileData) Mod 3) Then
        'If the last line is processed and length of
        'source data is not a number divisible by 3,
        'add one or two blankspace symbols
        strFileData = strFileData + Space(3 - _
            (Len(strFileData) Mod 3))
    End If
    For j = 1 To Len(strFileData) Step 3
        'Breake each 3 (8-bits) bytes to 4 (6-bits) bytes
        '
        '1 byte
        strTempLine = strTempLine + _
            Chr(Asc(Mid(strFileData, j, 1)) \ 4 + 32)
        '2 byte
        strTempLine = strTempLine + _
            Chr((Asc(Mid(strFileData, j, 1)) Mod 4) * 16 _
            + Asc(Mid(strFileData, j + 1, 1)) \ 16 + 32)
        '3 byte
        strTempLine = strTempLine + _
            Chr((Asc(Mid(strFileData, j + 1, 1)) Mod 16) * 4 _
            + Asc(Mid(strFileData, j + 2, 1)) \ 64 + 32)
        '4 byte
        strTempLine = strTempLine + _
            Chr(Asc(Mid(strFileData, j + 2, 1)) Mod 64 + 32)
    Next j
    'add encoded line to result buffer
    strResult = strResult + strTempLine + vbLf
    'reset line buffer
    strTempLine = ""
Next i
Close intFile
'add the end marker
strResult = strResult & "'" & vbLf + "end" + vbLf
'asign return value
UUEncodeFile = strResult
End Function