#include <iostream> #include "cryptlib.h" #include "rijndael.h" #include "modes.h" #include "files.h" #include "osrng.h" #include "hex.h" #include "base64.h" using namespace CryptoPP;
std::string aes_encrypt_ecb_base64(std::string data , unsigned char* key, int keylen) { std::string encrypt_str; try { CryptoPP::ECB_Mode<CryptoPP::AES>::Encryption ecb_encription(key, keylen); CryptoPP::StreamTransformationFilter stf_encription( ecb_encription, new CryptoPP::Base64Encoder(new CryptoPP::StringSink(encrypt_str)), CryptoPP::BlockPaddingSchemeDef::ZEROS_PADDING ); stf_encription.Put(reinterpret_cast<const unsigned char*>(data.c_str()), data.length() + 1); stf_encription.MessageEnd(); } catch (std::exception e) { std::cout << e.what() << std::endl; } return encrypt_str; }
std::string aes_encrypt_ecb_hex(std::string data , unsigned char* key, int keylen) { std::string encrypt_str; try { CryptoPP::ECB_Mode<CryptoPP::AES>::Encryption ecb_encription(key, keylen); CryptoPP::StreamTransformationFilter stf_encription( ecb_encription, new CryptoPP::HexEncoder(new CryptoPP::StringSink(encrypt_str)), CryptoPP::BlockPaddingSchemeDef::ZEROS_PADDING ); stf_encription.Put(reinterpret_cast<const unsigned char*>(data.c_str()), data.length() + 1); stf_encription.MessageEnd(); } catch (std::exception e) { std::cout << e.what() << std::endl; } return encrypt_str; }
std::string aes_decrypt_ecb_base64(std::string base64_data, unsigned char* key, int keylen) { try { std::string aes_encrypt_data; CryptoPP::Base64Decoder decoder; decoder.Attach(new CryptoPP::StringSink(aes_encrypt_data)); decoder.Put(reinterpret_cast<const unsigned char*>(base64_data.c_str()), base64_data.length()); decoder.MessageEnd(); std::string decrypt_data; CryptoPP::ECB_Mode<CryptoPP::AES>::Decryption ebc_description(key, keylen); CryptoPP::StreamTransformationFilter stf_description( ebc_description, new CryptoPP::StringSink(decrypt_data), CryptoPP::BlockPaddingSchemeDef::ZEROS_PADDING ); stf_description.Put( reinterpret_cast<const unsigned char*>(aes_encrypt_data.c_str()), aes_encrypt_data.length() ); stf_description.MessageEnd(); return decrypt_data; } catch (std::exception e) { std::cout << e.what() << std::endl; return ""; } }
std::string aes_decrypt_ecb_hex(std::string hex_data, unsigned char* key, int keylen) { try { std::string aes_encrypt_data; CryptoPP::HexDecoder decoder; decoder.Attach(new CryptoPP::StringSink(aes_encrypt_data)); decoder.Put(reinterpret_cast<const unsigned char*>(hex_data.c_str()), hex_data.length()); decoder.MessageEnd(); std::string decrypt_data; CryptoPP::ECB_Mode<CryptoPP::AES>::Decryption ebc_description(key, keylen); CryptoPP::StreamTransformationFilter stf_description( ebc_description, new CryptoPP::StringSink(decrypt_data), CryptoPP::BlockPaddingSchemeDef::ZEROS_PADDING ); stf_description.Put( reinterpret_cast<const unsigned char*>(aes_encrypt_data.c_str()), aes_encrypt_data.length() ); stf_description.MessageEnd(); return decrypt_data; } catch (std::exception e) { std::cout << e.what() << std::endl; return ""; } } int main() { std::string en_base64 = aes_encrypt_ecb_base64("hello cryptopp",(unsigned char*)"1234567812345678", 16); printf("en:%s \n", en_base64.c_str()); std::string de_base64 = aes_decrypt_ecb_base64(en_base64, (unsigned char*)"1234567812345678", 16); printf("de:%s \n", de_base64.c_str()); std::string en_hex = aes_encrypt_ecb_hex("hello cryptopp", (unsigned char*)"1234567812345678", 16); printf("en:%s \n", en_hex.c_str()); std::string de_hex = aes_decrypt_ecb_hex(en_hex, (unsigned char*)"1234567812345678", 16); printf("de:%s \n", de_hex.c_str()); (void)getchar(); return 0; }
|