Sviluppare funzionalita su Microsoft Office con VBA Modulo per criptare e decriptare file di testo

Login Registrati
Stai vedendo 15 articoli - dal 1 a 15 (di 15 totali)
  • Autore
    Articoli
  • #15812 Score: 0 | Risposta

    Jimmy
    Partecipante

      Ciao a tutti, avevo l'esigenza di salvare dei dati dentro un semplice file di testo, però volevo che non risultassero visibili a tutti, quindi ho creato un semplice modulo con due funzioni: una per criptare la stringa di testo ed un'altra per decriptarla.

      In pratica il sistema funziona come da immagine di esempio sottostante:

      Ovviamente come stringa si può passare anche il contenuto di tutto un file di testo.

      Vi allego il file con il modulo delle due funzioni, così a chi potesse servire se lo può copiare, e/o modificare a piacimento, nel suo progetto. Ciao.

      Allegati:
      You must be logged in to view attached files.
      #15822 Score: 0 | Risposta

      vecchio frac
      Senior Moderator
        272 pts
        Public Function CriptaTesto(ByVal Testo As String) As String
        'Nota: se incontra una lettera "y" questa viene criptata in un CR (codice 13) + LF (codice 10), _
        perciò nel DecriptaTesto bisogna togliere il LF quando incontra il codice 10
        

        Una limitazione inevitabile in un cifrario per sostituzione.

                lngCodice = Asc(Mid$(Testo, i, 1))
                lngCodice = 255 - lngCodice
                lngCodice = lngCodice * 2
        

        E' prolisso non trovi? 

        A parte le limitazioni di cui ti sei accorto (e il dover quindi correre ai ripari per gestire i caratteri particolari), queste routine basate sulla sostituzione possono essere forzate con un po' di attacchi a forza bruta. Dipende quindi da quanta robustezza ti serve nell'esportare i tuoi dati (considera sistemi più solidi come quello che uso io, basati su chiavi casuali e Xor). Cioè, se devi salvare una tavola di password forse non è il caso, ma se devi passare un indirizzario di fornitori (e mantenere un cauto riserbo sulle informazioni), allora è un sistema accettabile.

        Ti ringrazio comunque per aver condiviso il tuo lavoro. Sicuramente tornerà utile a qualcuno   

        #15835 Score: 0 | Risposta

        Jimmy
        Partecipante

          vecchio frac ha scritto:

          Dipende quindi da quanta robustezza ti serve nell'esportare i tuoi dati (considera sistemi più solidi come quello che uso io, basati su chiavi casuali e Xor). Cioè, se devi salvare una tavola di password forse non è il caso, ma se devi passare un indirizzario di fornitori (e mantenere un cauto riserbo sulle informazioni), allora è un sistema accettabile.

          Concordo che non è robusta come sicurezza, ma l'intenzione è di celare ai meno esperti il contenuto, e fidati, a chi si rivolge se vede già che il file ha una estensione diversa da quelle classiche (.doc, .txt, etc...)  si blocca. Se poi prova ad aprire il file con Notepad e vede tutti i segni strani sono sicuro che lo richiude in meno di un secondo  .

          Ciao.

          #15844 Score: 0 | Risposta

          vecchio frac
          Senior Moderator
            272 pts

            Well done 

             

            #15850 Score: 0 | Risposta

            Jimmy
            Partecipante

              Comunque hai ragione, come protezione è debole, perciò mi voglio mettere a fare qualcosa un po' più solida, con ad esempio una funzione di derivazione della chiave. Quando ho pronta la routine la copio, così mi dite che ne pensate.

              Ciao.

              #15865 Score: 0 | Risposta

              vecchio frac
              Senior Moderator
                272 pts

                Ottimo spirito di condivisione! E visto che l'argomento ti interessa, mi permetto di rimandarti alla lettura del piccolo articolo che ho scritto qualche tempo fa su queste pagine (magari troverai qualche spunto interessante):

                Codici segreti con l’operatore Xor

                #15873 Score: 0 | Risposta

                patel
                Moderatore
                  51 pts

                  Ciao VF, ho provato la tua funzione, se ho ben capito un file criptato con quella può essere letto da chiunque possieda quella funzione, non sarebbe meglio avere una criptazione legata ad una password ?

                  #15880 Score: 0 | Risposta

                  vecchio frac
                  Senior Moderator
                    272 pts

                    Quella funzione mi è servita per un progetto che aveva bisogno di memorizzare una tabella di password in un db Access. Solo il frontend di Admin ha la funzione di de-crittazione quindi anche qualora qualcuno trovasse il backend con la tabella di password, si troverebbe un mucchio di caratteri incomprensibili. Un lavoro più didattico che altro, ma sufficiente allo scopo 🙂

                    #15883 Score: 0 | Risposta

                    Jimmy
                    Partecipante

                      vecchio frac ha scritto:

                      Ottimo spirito di condivisione! E visto che l'argomento ti interessa, mi permetto di rimandarti alla lettura del piccolo articolo che ho scritto qualche tempo fa su queste pagine (magari troverai qualche spunto interessante):

                      Grazie, appena finito di leggere. Interessante articolo e tra l'altro ho imparato qualcosa di più sull'uso di Xor.

                      #15886 Score: 0 | Risposta

                      patel
                      Moderatore
                        51 pts

                        qui http://www.vbaexpress.com/kb/getarticle.php?kb_id=951  puoi trovare una funzione che usa una password

                         

                        #15898 Score: 0 | Risposta

                        Jimmy
                        Partecipante

                          patel ha scritto:

                          qui http://www.vbaexpress.com/kb/getarticle.php?kb_id=951  puoi trovare una funzione che usa una password

                          Patel, ho provato ad implementare la funzione che hai segnalato, però c'è qualcosa che non va, o meglio, con alcuni testi funziona, mentre con altri non ritorna correttamente il testo iniziale. Ho messo di seguito un esempio:

                          e dopodiché ho inserito il testo cifrato e non è tornato il testo iniziale.

                          Non capisco dove sia l'errore.

                          #15902 Score: 0 | Risposta

                          patel
                          Moderatore
                            51 pts

                            a me funziona, allego file

                            Allegati:
                            You must be logged in to view attached files.
                            #15906 Score: 0 | Risposta

                            Jimmy
                            Partecipante

                              patel ha scritto:

                              a me funziona, allego file

                              Credo che il problema sia nella casella di testo. Se utilizzo le celle del foglio di calcolo non ci sono problemi, però se il risultato lo metto dentro una TextBox viene diverso. Guarda il file modificato che ti ho allegato e l'immagine sottostante.

                              Stessa funzione, stessi dati di ingresso, però il risultato è diverso se l'output lo inserisco in una cella oppure dentro una casella di testo. Facendo dei semplici controlli si può vedere che il testo della cella non è lo stesso di quello dentro la casella di testo, anche se in entrambi è stato inserito il solito risultato. È questo il motivo per cui rileggendo dalla casella di testo non torna più il testo originale.

                              Allegati:
                              You must be logged in to view attached files.
                              #15908 Score: 0 | Risposta

                              Jimmy
                              Partecipante

                                Jimmy ha scritto:

                                Stessa funzione, stessi dati di ingresso, però il risultato è diverso se l'output lo inserisco in una cella oppure dentro una casella di testo.

                                Confermo che il problema è la casella di testo. Ho fatto la seguente prova di verifica:

                                - il testo cifrato l'ho messo dentro una variabile stringa e poi ho passato la stringa come argomento per la decodifica e funziona tutto correttamente restituendo il testo originale

                                - il testo cifrato l'ho messo dentro la casella di testo e poi ho passato il contenuto della casella di testo come argomento per la decodifica e il risultato è diverso dal testo iniziale.

                                Qualcuno ha idea del perché succeda questo?

                                #15926 Score: 0 | Risposta

                                patel
                                Moderatore
                                  51 pts

                                  probabilmente è un problema di codifica nella trasformazione in byte, l'importante sarebbe che funzionasse con file di testo e mi sembra proprio di no, alcuni caratteri dopo lo xor diventano LF o CR e quindi spezzano le righe del file di testo non rendendo possibile il decrypt che cerca la stringa xxx

                                  Per file di testo mi sembra più adatto il metodo 3DES Encryption/Decryption che trovi qui

                                  https://stackoverflow.com/questions/1470939/encrypting-and-decrypting-strings-in-excel/48054645

                                   

                                Login Registrati
                                Stai vedendo 15 articoli - dal 1 a 15 (di 15 totali)
                                Rispondi a: Modulo per criptare e decriptare file di testo
                                Gli allegati sono permessi solo ad utenti REGISTRATI
                                Le tue informazioni: