#include #include <openssl/aes.h> #include <openssl/evp.h> #include <openssl/err.h> #include #include

using namespace std;

string hexStringToBytes(string input){ string output = ''; for(int i = 0; i < input.length(); i += 2){ string byteString = input.substr(i, 2); char byte = (char) strtol(byteString.c_str(), NULL, 16); output += byte; } return output; }

string decryptByAES(string input, string key){ // 算法 const EVP_CIPHER cipher = EVP_aes_128_ecb(); // 指定秘钥规则 // 第一个参数表示:密钥,key的字节数组 长度必须是16位 // 第二个参数表示:算法 EVP_CIPHER_CTX ctx = EVP_CIPHER_CTX_new(); EVP_DecryptInit_ex(ctx, cipher, NULL, (unsigned char) key.c_str(), NULL); // 进行解密 string inputBytes = hexStringToBytes(input); string output(inputBytes.size() + AES_BLOCK_SIZE - 1, 0); int outputSize; EVP_DecryptUpdate(ctx, (unsigned char) output.c_str(), &outputSize, (unsigned char*) inputBytes.c_str(), inputBytes.size()); int finalSize; EVP_DecryptFinal_ex(ctx, (unsigned char*) (output.c_str() + outputSize), &finalSize); EVP_CIPHER_CTX_free(ctx); output.resize(outputSize + finalSize); return output; }

int main(){ string input = '2b7e151628aed2a6abf7158809cf4f3c'; string key = '0123456789abcdef'; string output = decryptByAES(input, key); cout << output << endl; return 0; }


原文地址: https://www.cveoy.top/t/topic/nQPI 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录