C++ 使用 OpenSSL 实现 AES 加密 (对应 Java 代码)
#include <openssl/aes.h>
#include
std::string encryptByAES(const std::string& input, const std::string& key) { // 算法 const EVP_CIPHER* cipher = EVP_aes_128_ecb(); // 指定秘钥规则 // 第一个参数表示:密钥,key的字节数组 长度必须是16位 // 第二个参数表示:密钥长度 // 第三个参数表示:IV,ECB模式不需要IV,可传nullptr const unsigned char* key_data = reinterpret_cast<const unsigned char*>(key.data()); int key_length = key.length(); unsigned char iv[AES_BLOCK_SIZE]; memset(iv, 0, AES_BLOCK_SIZE); // 对加密进行初始化 EVP_CIPHER_CTX* ctx = EVP_CIPHER_CTX_new(); EVP_EncryptInit_ex(ctx, cipher, nullptr, key_data, iv); // 进行加密 unsigned char* output = new unsigned char[input.length() + AES_BLOCK_SIZE]; int output_length; EVP_EncryptUpdate(ctx, output, &output_length, reinterpret_cast<const unsigned char*>(input.data()), input.length()); int final_length; EVP_EncryptFinal_ex(ctx, output + output_length, &final_length); output_length += final_length; std::string result(reinterpret_cast<char*>(output), output_length); delete[] output; EVP_CIPHER_CTX_free(ctx); return result; }
原文地址: https://www.cveoy.top/t/topic/nQQf 著作权归作者所有。请勿转载和采集!