QT+OpenSSL实现Java AES解密:代码示例与解析
#include
using namespace std;
string decryptByAES(string input, string key) { string algorithm = 'AES'; string transformation = 'AES/ECB/PKCS5Padding'; const unsigned char* key_data = (unsigned char*)key.c_str(); const unsigned char* input_data = (unsigned char*)input.c_str(); int input_len = input.length();
EVP_CIPHER_CTX* ctx = EVP_CIPHER_CTX_new();
EVP_CIPHER_CTX_init(ctx);
EVP_CipherInit_ex(ctx, EVP_aes_128_ecb(), NULL, key_data, NULL, 0);
EVP_CIPHER_CTX_set_padding(ctx, 1);
int max_output_len = input_len + AES_BLOCK_SIZE;
unsigned char* output_data = new unsigned char[max_output_len];
int output_len = 0;
EVP_CipherUpdate(ctx, output_data, &output_len, input_data, input_len);
int final_len = 0;
EVP_CipherFinal_ex(ctx, output_data + output_len, &final_len);
output_len += final_len;
string output = string((char*)output_data, output_len);
delete [] output_data;
EVP_CIPHER_CTX_free(ctx);
return output;
}
int main() { string input = '6c6ac8e9de18d9d137d8a7cfb7ff1cf5'; string key = '1234567890123456'; string output = decryptByAES(input, key); cout << output << endl;
return 0;
}
原文地址: https://www.cveoy.top/t/topic/nPWb 著作权归作者所有。请勿转载和采集!