Sviluppare funzionalita su Microsoft Office con VBA Codici segreti con l’operatore Xor

Login Registrati
Stai vedendo 10 articoli - dal 1 a 10 (di 10 totali)
  • Autore
    Articoli
  • #6572 Risposta

    vecchio frac
    Moderatore
      16 pts

      La funzioncina che presentiamo è una rivisitazione di un noto algoritmo di cifratura molto semplice, basato sull'operatore Xor. Il codice è ampiamente
      [Leggi tutto al seguente link: https://www.excelvba.it/forumexcel/codici-segreti-con-loperatore-xor/]

      #6576 Risposta
      albatros54
      albatros54
      Moderatore
        10 pts

        ho provato la funzione e....Funziona,pero ho notato una cosa, lanciando ripetutamente le funzione con la stessa PW leggibile, mi ritornava sempre una PW criptata diversa,e dato dal fatto che la variabile "iEncoder" si inzializza ogni volta con valori random?

         

        Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
        Sempre il mare, uomo libero, amerai!
        ( Charles Baudelaire )
        #6577 Risposta

        vecchio frac
        Moderatore
          16 pts

          Certamente, hai notato giusto ed è proprio lì la forza della routine. Il processo inverso funziona sempre perchè la risultante è sempre un carattere con il suo Xor, e i deu caratteri nuovamente Xor-ati tra loro restituiscono il carattere di partenza (la risultante è lunga il doppio dell'originale perchè conserva in sè codificante e xor-codificato) 🙂

          #6578 Risposta
          albatros54
          albatros54
          Moderatore
            10 pts

            Ho notato qualche cosa che non va.

            Ho criptato il mio nickname, tutto bene, ho copiato i vari caratteri per poi risalire al nickname in chiaro, li ho dati in pasto alla funzione ...non funziona, perche tra i caratteri criptati si trovano il segno "=" e il segno doppie virgolette  " . E un Bug ho sono io con il mio nickname a farlo andare in errore? Excel 2007 win 7

             

            Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
            Sempre il mare, uomo libero, amerai!
            ( Charles Baudelaire )
            #6579 Risposta

            vecchio frac
            Moderatore
              16 pts

              Non è un bug, il problema è delle virgolette che quando le dai in pasto a una funzione devi raddoppiarle altrimenti il parser di VBA non le interpreta (o meglio le interpreta come fine del corpo argomenti e invece vanno "escapate").

              In generale, se una funzione accetta un argomento di tipo stringa, puoi passarle qualsiasi carattere ma il carattere " deve essere raddoppiato perchè venga inteso come semplice.

              Option Explicit
              
              Function myFunc(s As String) As String
                  myFunc = s
              End Function

              In immediata il test:

              ?myfunc("topolino")
              pippo
              ?myfunc("topolino ""ama"" pluto")
              topolino "ama" pluto
              #6580 Risposta

              vecchio frac
              Moderatore
                16 pts

                Lo dico anche se non c'entra niente, è lo stesso problema dei doppi apici nella SQL injection, tecnica che non si dovrebbe usare (meglio usare i parametri) ma è il metodo più semplice e veloce per costruire stringhe SQL da far eseguire al motore Jet di Access (o via DAO o via ADO).

                #6581 Risposta

                vecchio frac
                Moderatore
                  16 pts

                  Ho fatto un test col tuo nick (ho dovuto farne tanti per ottenere un carattere virgolette 🙂 perchè ogni volta la funzione dà un risultato diverso).

                  cipher("albatros54") = !@[7"@F'C7H:&I;HfSbV

                  e quindi

                  cipher("!@[7""@F'C7H:&I;HfSbV", 0) = albatros54

                  Dobbiamo raddopppiare quel carattere virgolette (l'ho evidenziato in grassetto, spero che si veda) perchè altrimenti VBA crede che sia finita la parte della funzione passata in argomento.

                  #6582 Risposta
                  albatros54
                  albatros54
                  Moderatore
                    10 pts

                    Non voglio mettere in dubbio quello che dici, pero non riesco a decriptare il mio nickname,ho messo fra doppi apici le virgolette, ho messo fra doppi apici il segno = manon funziona 😀 

                    prova con questa stringa

                    cipher("D%@,=YR7#Q9XO/F>P/J";0)

                     

                    Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
                    Sempre il mare, uomo libero, amerai!
                    ( Charles Baudelaire )
                    #6584 Risposta
                    albatros54
                    albatros54
                    Moderatore
                      10 pts

                      ALLA VOCE 

                      nella striga che ti ho postato mancano dei caratteri :mrgreen: 

                      sembra funzionare

                       

                      Qual è il punto di avere gusti diversi, se non mostrare che i cervelli lavorano diversamente, che pensiamo diversamente? ( Alan Turing)
                      Sempre il mare, uomo libero, amerai!
                      ( Charles Baudelaire )
                      #6586 Risposta

                      vecchio frac
                      Moderatore
                        16 pts

                        albatros54 wrote:ho messo fra doppi apici il segno =

                        Perché? il segno di uguale non dà problemi, solo quello delle virgolette 🙂

                      Login Registrati
                      Stai vedendo 10 articoli - dal 1 a 10 (di 10 totali)
                      Rispondi a: Codici segreti con l’operatore Xor
                      Gli allegati sono permessi solo ad utenti REGISTRATI
                      Le tue informazioni:



                      vecchio frac - 591 risposte

                      albatros54
                      albatros54 - 507 risposte

                      Marius44
                      Marius44 - 270 risposte

                      patel
                      patel - 257 risposte

                      Luca73
                      Luca73 - 194 risposte

                      ChatBox per richiedere velocemente assistenza a semplici problematiche

                      Devi fare il login per scrivere nella chat

                      0
                      1