Crittografia dati simmetrica
-
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 :)
-
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
-
Grazie, proverò con openSSL. Non lo sto già usando in realtà ma mi sembra anche il più facile da utilizzare sotto ambiente windows. :)
-
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
-
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
@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?
-
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 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)@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" -
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)@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 :) -
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?