55#include "openssl/engine.h"
66#include "Base64.hpp"
77
8-
98static string GetIV (string sha , string keyName ) {
109 unsigned char out_key [32 ];
1110 memset (out_key , 0 , sizeof (out_key ));
@@ -20,32 +19,34 @@ static string DecryptAES(string cipherText, string keyValue, string IV) {
2019 // GetIV
2120 // E8 ? ? ? ? 48 8B 76 18
2221 int actual_size = 0 , final_size = 0 ;
23- EVP_CIPHER_CTX * d_ctx = EVP_CIPHER_CTX_new ();
22+ EVP_CIPHER_CTX * ctx = EVP_CIPHER_CTX_new ();
2423 string keyIn = base64 ::from_base64 (keyValue );
2524
2625 unsigned char * out = (unsigned char * )malloc (cipherText .size ());
2726 memset (out , 0 , cipherText .size ());
28- EVP_DecryptInit (d_ctx , EVP_aes_128_gcm (), 0 , 0 );
29- EVP_CIPHER_CTX_ctrl (d_ctx , EVP_CTRL_GCM_SET_IVLEN , IV .size (), 0 );
30- EVP_DecryptInit (d_ctx , 0 , (const unsigned char * )keyIn .c_str (), (const unsigned char * )IV .c_str ());
31- EVP_DecryptUpdate (d_ctx , out , & actual_size , (const unsigned char * )cipherText .c_str (), cipherText .size ()); // E8 ? ? ? ? 0F B6 4E 06
32- EVP_DecryptFinal (d_ctx , out , & final_size );
27+ EVP_DecryptInit (ctx , EVP_aes_128_gcm (), 0 , 0 );
28+ EVP_CIPHER_CTX_ctrl (ctx , EVP_CTRL_GCM_SET_IVLEN , IV .size (), 0 );
29+ EVP_DecryptInit (ctx , 0 , (const unsigned char * )keyIn .c_str (), (const unsigned char * )IV .c_str ());
30+ EVP_DecryptUpdate (ctx , out , & actual_size , (const unsigned char * )cipherText .c_str (), cipherText .size ()); // E8 ? ? ? ? 0F B6 4E 06
31+ EVP_DecryptFinal (ctx , out , & final_size );
32+ EVP_CIPHER_CTX_free (ctx );
3333 return string ((char * )out , actual_size );
3434}
3535
3636static string EncryptAES (string text , string keyValue , string IV ) {
3737 int actual_size = 0 , final_size = 0 ;
38- EVP_CIPHER_CTX * d_ctx = EVP_CIPHER_CTX_new ();
38+ EVP_CIPHER_CTX * ctx = EVP_CIPHER_CTX_new ();
3939 string keyIn = base64 ::from_base64 (keyValue );
4040
4141 unsigned char * out = (unsigned char * )malloc (text .size ());
4242 memset (out , 0 , text .size ());
4343
44- EVP_EncryptInit (d_ctx , EVP_aes_128_gcm (), 0 , 0 );
45- EVP_CIPHER_CTX_ctrl (d_ctx , EVP_CTRL_GCM_SET_IVLEN , IV .size (), 0 );
44+ EVP_EncryptInit (ctx , EVP_aes_128_gcm (), 0 , 0 );
45+ EVP_CIPHER_CTX_ctrl (ctx , EVP_CTRL_GCM_SET_IVLEN , IV .size (), 0 );
4646
47- EVP_EncryptInit (d_ctx , 0 , (const unsigned char * )keyIn .c_str (), (const unsigned char * )IV .c_str ());
48- EVP_EncryptUpdate (d_ctx , out , & actual_size , (const unsigned char * )text .c_str (), text .size ()); // E8 ? ? ? ? 0F B6 4E 06
49- EVP_EncryptFinal (d_ctx , out , & final_size );
47+ EVP_EncryptInit (ctx , 0 , (const unsigned char * )keyIn .c_str (), (const unsigned char * )IV .c_str ());
48+ EVP_EncryptUpdate (ctx , out , & actual_size , (const unsigned char * )text .c_str (), text .size ()); // E8 ? ? ? ? 0F B6 4E 06
49+ EVP_EncryptFinal (ctx , out , & final_size );
50+ EVP_CIPHER_CTX_free (ctx );
5051 return string ((char * )out , actual_size );
5152}
0 commit comments