Make untracked folder
This commit is contained in:
parent
7f5576ded6
commit
77affb6d55
189 changed files with 10198 additions and 0 deletions
110
Untracked/Doxygen/CryptClass/AESCrypt.cpp
Normal file
110
Untracked/Doxygen/CryptClass/AESCrypt.cpp
Normal file
|
@ -0,0 +1,110 @@
|
|||
/**
|
||||
* @file AESCrypt.cpp
|
||||
* @brief AESCrypt class definitions
|
||||
* @author manzerbredes
|
||||
* @date 8 Mars 2015
|
||||
*
|
||||
* Contain all definitions of AESCrypt class.
|
||||
*
|
||||
*/
|
||||
|
||||
#include "AESCrypt.hpp"
|
||||
|
||||
//Constructor
|
||||
AESCrypt::AESCrypt(){
|
||||
this->hash=HASHCrypt(); //Init hash attribute
|
||||
}
|
||||
|
||||
//Destructor
|
||||
AESCrypt::~AESCrypt(){
|
||||
}
|
||||
|
||||
|
||||
//Encrypt string
|
||||
std::string AESCrypt::encrypt(std::string key, std::string data){
|
||||
|
||||
//Generate SHA-256
|
||||
byte digest[32];
|
||||
hash.getSHA_256(key, digest, (int)sizeof(digest));
|
||||
|
||||
|
||||
|
||||
|
||||
//Add padding for AES
|
||||
int pad=0;
|
||||
int tmpL=data.length();
|
||||
while(tmpL % 128 != 0){
|
||||
tmpL++;
|
||||
pad++;
|
||||
|
||||
}
|
||||
std::cout <<pad;
|
||||
while(data.length() % 128 != 0){
|
||||
data+=pad;
|
||||
}
|
||||
|
||||
|
||||
//Contain data encrypted
|
||||
std::string cipher;
|
||||
|
||||
//Use try, catch to be ensure no problems happening
|
||||
try{
|
||||
//Create encoder to encrypt data
|
||||
CryptoPP::ECB_Mode<CryptoPP::AES>::Encryption encoder;
|
||||
encoder.SetKey( digest, sizeof(digest) );
|
||||
|
||||
//Encrypt data with StreamTransformationFilter with NO PADDING
|
||||
CryptoPP::StringSource ss1(data, true,
|
||||
new CryptoPP::StreamTransformationFilter( encoder,
|
||||
new CryptoPP::StringSink( cipher ),
|
||||
CryptoPP::StreamTransformationFilter::PKCS_PADDING
|
||||
|
||||
)
|
||||
);
|
||||
}
|
||||
catch( CryptoPP::Exception& e )
|
||||
{
|
||||
std::cerr << e.what() << std::endl;
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
|
||||
//return encrypted data
|
||||
return cipher;
|
||||
|
||||
}
|
||||
|
||||
//Decrypt string
|
||||
std::string AESCrypt::decrypt(std::string key, std::string data){
|
||||
|
||||
|
||||
byte digest[32];
|
||||
hash.getSHA_256(key, digest, (int)sizeof(digest));
|
||||
|
||||
|
||||
//Contain data decrypted
|
||||
std::string cipher;
|
||||
|
||||
//Use try, catch to be ensure no problems happening
|
||||
try {
|
||||
|
||||
//Create decoder to encrypt data
|
||||
CryptoPP::ECB_Mode< CryptoPP::AES >::Decryption decoder;
|
||||
decoder.SetKey( digest, sizeof(digest) );
|
||||
|
||||
//Decrypt data with StreamTransformationFilter with NO PADDING
|
||||
CryptoPP::StringSource ss3( data, true,
|
||||
new CryptoPP::StreamTransformationFilter( decoder,
|
||||
new CryptoPP::StringSink( cipher ),
|
||||
CryptoPP::StreamTransformationFilter::PKCS_PADDING
|
||||
)
|
||||
);
|
||||
}
|
||||
catch( CryptoPP::Exception& e )
|
||||
{
|
||||
std::cerr << e.what() << std::endl;
|
||||
exit(1);
|
||||
}
|
||||
|
||||
//return decrypted data
|
||||
return cipher;
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue