Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. International
  3. Italian
  4. Crittografia dati simmetrica
Forum Updated to NodeBB v4.3 + New Features

Crittografia dati simmetrica

Scheduled Pinned Locked Moved Unsolved Italian
9 Posts 2 Posters 3.2k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • B Offline
    B Offline
    Bruschetta
    wrote on last edited by
    #1

    Vorrei sapere se c'è una libreria standard o compatibile con il QT che mi permetta di fare in maniera abbastanza semplice criptazione di stringhe in maniera simmetrica.

    Avete qualche link da suggerirmi? Grazie :)

    1 Reply Last reply
    0
    • VRoninV Offline
      VRoninV Offline
      VRonin
      wrote on last edited by
      #2

      Se gia' usi OpenSSL nel tuo programma puoi usare direttamente quello: https://wiki.openssl.org/index.php/EVP_Symmetric_Encryption_and_Decryption in alternativa puoi usare Crypto++ https://www.cryptopp.com/wiki/Advanced_Encryption_Standard

      "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
      ~Napoleon Bonaparte

      On a crusade to banish setIndexWidget() from the holy land of Qt

      1 Reply Last reply
      1
      • B Offline
        B Offline
        Bruschetta
        wrote on last edited by
        #3

        Grazie, proverò con openSSL. Non lo sto già usando in realtà ma mi sembra anche il più facile da utilizzare sotto ambiente windows. :)

        1 Reply Last reply
        0
        • VRoninV Offline
          VRoninV Offline
          VRonin
          wrote on last edited by VRonin
          #4

          In realta' dipende. OpenSSL usa un API in C quindi potrebbe essere "pesantina" da digerire. D'altra parte, a meno di eventi epocali (vedi heartbleed che pero' era in libssl, non in libcrypto), OpenSSL e' meno prona a bug che potrebbero compromettere la sicurezza dei tuoi dati perche' e' usata da cosi' tanta gente

          "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
          ~Napoleon Bonaparte

          On a crusade to banish setIndexWidget() from the holy land of Qt

          B 1 Reply Last reply
          0
          • VRoninV VRonin

            In realta' dipende. OpenSSL usa un API in C quindi potrebbe essere "pesantina" da digerire. D'altra parte, a meno di eventi epocali (vedi heartbleed che pero' era in libssl, non in libcrypto), OpenSSL e' meno prona a bug che potrebbero compromettere la sicurezza dei tuoi dati perche' e' usata da cosi' tanta gente

            B Offline
            B Offline
            Bruschetta
            wrote on last edited by Bruschetta
            #5

            @VRonin
            Dopo quello che mi hai detto sto anche tentando (inutilmente) di compilare le livrerie Crypto++ sotto windows con QT5.7 seguendo questo tutorial http://www.qtcentre.org/threads/28809-Compiling-amp-using-Crypto-with-mingw-version-of-

            Inutile dire che ho un errore:
            No rule to make target 'cryptlib_bds.cpp', needed by 'debug/cryptlib_bds.o'

            Sai mica suggerirmi dove sto sbagliando o indicarmi una guida da seguire?

            1 Reply Last reply
            0
            • VRoninV Offline
              VRoninV Offline
              VRonin
              wrote on last edited by
              #6

              La cosa piu' semplice e' usare CMake. Scarica cmake da qui: https://cmake.org/download/ e installalo (nel mio esempio lo installo in C:\Program Files (x86)\CMake )

              poi apri il terminale di mingw vai nella cartella del sorgente di crypto++ e esegui:

              set PATH=C:\Program Files (x86)\CMake\bin;%PATH%
              set CRIPTOPPLIBPATH = C:\Cryptopp\
              if not exist "%CRIPTOPPLIBPATH%" mkdir %CRIPTOPPLIBPATH%
              mkdir build
              cd build
              cmake -G "MinGW Makefiles" -DCMAKE_DEBUG_POSTFIX=d -DCMAKE_INSTALL_PREFIX=%CRIPTOPPLIBPATH% -DCMAKE_BUILD_TYPE=DEBUG ../
              mingw32-make
              mingw32-make install
              cmake -G "MinGW Makefiles" -DCMAKE_INSTALL_PREFIX=%CRIPTOPPLIBPATH% -DCMAKE_BUILD_TYPE=RELEASE ../
              mingw32-make
              mingw32-make install
              

              Questo dovrebbe installare il tutto in C:\Cryptopp\ (a me, per qualche motivo, installa tutto in C: ma ci siamo capiti)

              "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
              ~Napoleon Bonaparte

              On a crusade to banish setIndexWidget() from the holy land of Qt

              B 2 Replies Last reply
              1
              • VRoninV VRonin

                La cosa piu' semplice e' usare CMake. Scarica cmake da qui: https://cmake.org/download/ e installalo (nel mio esempio lo installo in C:\Program Files (x86)\CMake )

                poi apri il terminale di mingw vai nella cartella del sorgente di crypto++ e esegui:

                set PATH=C:\Program Files (x86)\CMake\bin;%PATH%
                set CRIPTOPPLIBPATH = C:\Cryptopp\
                if not exist "%CRIPTOPPLIBPATH%" mkdir %CRIPTOPPLIBPATH%
                mkdir build
                cd build
                cmake -G "MinGW Makefiles" -DCMAKE_DEBUG_POSTFIX=d -DCMAKE_INSTALL_PREFIX=%CRIPTOPPLIBPATH% -DCMAKE_BUILD_TYPE=DEBUG ../
                mingw32-make
                mingw32-make install
                cmake -G "MinGW Makefiles" -DCMAKE_INSTALL_PREFIX=%CRIPTOPPLIBPATH% -DCMAKE_BUILD_TYPE=RELEASE ../
                mingw32-make
                mingw32-make install
                

                Questo dovrebbe installare il tutto in C:\Cryptopp\ (a me, per qualche motivo, installa tutto in C: ma ci siamo capiti)

                B Offline
                B Offline
                Bruschetta
                wrote on last edited by Bruschetta
                #7

                @VRonin
                Intanto grazie per avermi tolto dalle beghe e per i consigli.
                Sono riuscito a compilare e installare le librerie, ho anche scoperto il perchè svalvolava nel path di installazione. Bastava aggiungere le virgolette nel parametro che definisce il prefix -> "-DCMAKE_INSTALL_PREFIX=c:\Cryptopp"

                1 Reply Last reply
                1
                • VRoninV VRonin

                  La cosa piu' semplice e' usare CMake. Scarica cmake da qui: https://cmake.org/download/ e installalo (nel mio esempio lo installo in C:\Program Files (x86)\CMake )

                  poi apri il terminale di mingw vai nella cartella del sorgente di crypto++ e esegui:

                  set PATH=C:\Program Files (x86)\CMake\bin;%PATH%
                  set CRIPTOPPLIBPATH = C:\Cryptopp\
                  if not exist "%CRIPTOPPLIBPATH%" mkdir %CRIPTOPPLIBPATH%
                  mkdir build
                  cd build
                  cmake -G "MinGW Makefiles" -DCMAKE_DEBUG_POSTFIX=d -DCMAKE_INSTALL_PREFIX=%CRIPTOPPLIBPATH% -DCMAKE_BUILD_TYPE=DEBUG ../
                  mingw32-make
                  mingw32-make install
                  cmake -G "MinGW Makefiles" -DCMAKE_INSTALL_PREFIX=%CRIPTOPPLIBPATH% -DCMAKE_BUILD_TYPE=RELEASE ../
                  mingw32-make
                  mingw32-make install
                  

                  Questo dovrebbe installare il tutto in C:\Cryptopp\ (a me, per qualche motivo, installa tutto in C: ma ci siamo capiti)

                  B Offline
                  B Offline
                  Bruschetta
                  wrote on last edited by Bruschetta
                  #8

                  @VRonin
                  Speravo di essermi lasciato tutto alle spalle ... Invece no!
                  La compilazione delle librerie Crypto++ è andata a buon fine ma non riesco ad utilizzarle.
                  Per essere più precisi implemento una funzione di criptaggio , compilo e non ho errori ma l'applicazione schianta malamente senza errori.

                  Vi posto il mio codice:

                  Chiper.h
                  #include <QDialog>
                  #include <QObject>
                  
                  class Cipher : public QObject
                  {
                      Q_OBJECT
                  
                  public:
                      explicit Cipher(QObject *parent = 0);
                      QString decrypt(const QString &password);
                      QString encrypt(const QString &password);
                  };
                  
                  Chiper.c
                  #include "cipher.h"
                  #include <qDebug>
                  #include <iostream>
                  #include <fstream>
                  
                  #include "modes.h"
                  #include "aes.h"
                  #include "filters.h"
                  #include <hex.h>
                  #include <sha.h>
                  #include <md5.h>
                  
                  #include <string>
                  #include <sstream>
                  #include <stdio.h>
                  
                  using namespace std;
                  
                  Cipher::Cipher(QObject *parent) : QObject(parent)
                  {
                      initalize();
                  }
                  
                  
                  QString Cipher::decrypt(const QString &password)
                  {
                  }
                  
                  QString Cipher::encrypt(const QString &password)
                  {
                      CryptoPP::MD5 hash;
                      byte digest[ CryptoPP::MD5::DIGESTSIZE ];
                      std::string message = "Hello World!";
                  
                      hash.CalculateDigest( digest, (const byte*)message.c_str(), message.length());
                  
                      CryptoPP::HexEncoder encoder;
                      std::string output;
                      encoder.Attach( new CryptoPP::StringSink( output ) );
                      encoder.Put( digest, sizeof(digest) );
                      encoder.MessageEnd();
                  
                      std::cout << "Input string: " << message << std::endl;
                      std::cout << "MD5: " << output << std::endl;
                      return QString::fromStdString(message);
                  
                  }
                  

                  nel .pro ho messo questo

                  win32{
                      INCLUDEPATH += C:/Cryptopp/include/cryptopp
                  }
                  
                  
                  win32:CONFIG(release, debug|release): LIBS += -L$$PWD/libs/ -lcryptopp
                  else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/libs/ -lcryptoppd
                  
                  INCLUDEPATH += $$PWD/libs
                  DEPENDPATH += $$PWD/libs
                  
                  win32:CONFIG(release, debug|release): LIBS += -L$$PWD/libs/ -llibcryptopp.dll
                  else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/libs/ -llibcryptopp.dlld
                  
                  INCLUDEPATH += $$PWD/libs
                  DEPENDPATH += $$PWD/libs
                  
                  win32:CONFIG(release, debug|release): LIBS += -L$$PWD/libs/ -lcryptopp
                  else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/libs/ -lcryptoppd
                  
                  INCLUDEPATH += $$PWD/libs
                  DEPENDPATH += $$PWD/libs
                  
                  win32:CONFIG(release, debug|release): LIBS += -L$$PWD/libs/ -llibcryptoppd.dll
                  else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/libs/ -llibcryptoppd.dlld
                  
                  INCLUDEPATH += $$PWD/libs
                  DEPENDPATH += $$PWD/libs
                  

                  Riuscite a vedere qualcosa che non torna? Il programma esce in maniera anomala ma senza errori e non so dove sbattere la testa.. :(
                  PS so che il codice non ci ocmbina nulla co nquello che mi proponevo ad inizio thread ma vorrei che intanto le librerie funzionassero con un QUALSIASI esempio e algoritmo di criptazione :)

                  1 Reply Last reply
                  0
                  • VRoninV Offline
                    VRoninV Offline
                    VRonin
                    wrote on last edited by
                    #9

                    il .pro sembra sbagliato... dovrebbe essere tipo:

                    INCLUDEPATH += C:/Cryptopp/include/cryptopp
                    LIBS += -LC:/Cryptopp/lib
                    CONFIG(debug, debug|release){
                    LIBS += -lcryptopp-staticd
                    }
                    else{
                    LIBS += -lcryptopp-static
                    }
                    

                    ma non dovrebbe crashare malamente... potresti postare la stack trace?

                    "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
                    ~Napoleon Bonaparte

                    On a crusade to banish setIndexWidget() from the holy land of Qt

                    1 Reply Last reply
                    0

                    • Login

                    • Login or register to search.
                    • First post
                      Last post
                    0
                    • Categories
                    • Recent
                    • Tags
                    • Popular
                    • Users
                    • Groups
                    • Search
                    • Get Qt Extensions
                    • Unsolved