Visualizzazione dei risultati da 1 a 8 su 8
  1. #1
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    96

    [VB] Perch non funziona?

    Ho creato la seguente funzione da utilizzare in un algoritmo di codifica( la stessa sia per la codifica che per la decodifica)

    Private Function codifica(ByVal testo As String, ByVal pass As String)
    Dim testo1() As Byte
    Dim pass1() As Byte

    testo1() = testo
    pass1() = pass
    For i = 0 To UBound(testo1()) Step 2
    If a < UBound(pass1()) / 2 Then a = a + 2 Else a = 0
    ch = pass1(a)
    testo1(i) = testo1(i) Xor ch
    Next

    codifica = testo1()
    End Function

    Il problema che se vado a codificare e poi a decodificare un file alcuni caratteri non vengono decodificati correttamente. Io ho provato con un file che contiene i caratteri con codice ascii ad 1 a 255 e ho notato che gli ultimi 25-30 caratteri non vengono decodificati correttamente. Esempio:
    File originale:
    

     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ __

    Lo codifico con una password(prova) e poi lo decodifico con la stessa password: ecco che cosa ottengo:
    

     !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~OZ1OMPIOM I7* MYIOMPIOM+I 2__ MIOMPIOMPOMIOMI OMPOMPOPI

    Gli ultimi caratteri non corrispondono al file originale.
    C' qualcuno che mi sa spiegare perch succede questo????

    Ringrazio tutti coloro che cercheranno di aiutarmi.

    Ciao, Andrea

  2. #2
    Utente di HTML.it L'avatar di vonkranz
    Registrato dal
    Sep 2001
    Messaggi
    1,387
    Quasi sicuramente in questa riga
    codice:
    testo1(i) Xor ch
    in decodifica il valore di ch e' diverso da quello che hai usato in codifica.
    ...and I miss you...like the deserts miss the rain...

  3. #3
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    96
    Ma se uso lo Xor non devo usare lo stesso valore sia per la codifica che per la decodifica?

  4. #4
    Utente di HTML.it L'avatar di vonkranz
    Registrato dal
    Sep 2001
    Messaggi
    1,387
    Originariamente inviato da Calem82
    Ma se uso lo Xor non devo usare lo stesso valore sia per la codifica che per la decodifica?
    Appunto!
    Prova a vedere se il carattere che usi per Xorare i codifica e' lo stesso che usi in decodifica (che a quanto ho capito e' nella variabile "ch").

    90 su 100 il valore di ch in codifica per il 500 byte e' 30 (faccio un esempio) mentre in decodifica e' ,sempre per il 500 byte e'53 e cosi' via.

    Per vedere se il problema non si annida in un altro punto dill'algoritmo, prova ad impostare un valore fisso per ch (ad es. 22) e prova sia a codificare che a decodificare.
    Si funziona, hai trovato il problema.
    Ciao.
    ...and I miss you...like the deserts miss the rain...

  5. #5
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    96
    Ho provato ma restituisce comunque alcuni caratteri sballati, c' qualcuno che mi pu postare il codice corretto per eseguire lo Xor???

    Ciao, Andrea

  6. #6

    ...

    io lo farei in modo diverso...

    codice:
    private function XORCrypt(myStr as string,pwd as string)as string
       Dim a as long,buff as string
       for a=1 to len(myStr)
          buff=buff & mid(myStr,a,1) XOR mid(pass,a mod len(pwd),1)
       next a
       XORCrypt=buff
    end function
    by giuSp [.NetDeveloper]

    ___________
    un po' di VB non fa male!....?
    C# more power to you!!

  7. #7
    Utente di HTML.it
    Registrato dal
    Apr 2002
    Messaggi
    96
    Cosi funziona, solo che pi lento rispetto a quello che usa un vettore di byte... Cmq grazie lo stesso!!!

    Ciao, Andrea

  8. #8

    ...

    di niente
    cmq se utilizzi un vettore di byte, con lo stesso algoritmo da me postato aumenti la velocit...........:gren:
    by giuSp [.NetDeveloper]

    ___________
    un po' di VB non fa male!....?
    C# more power to you!!

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.