以 aes-cbc-128, PKCS7 填充方式为例。
以下为使用两种不同api的实现相同加解密的代码:
int AesDecrypt(const std::string& sessionkey, const std::string& encrypted_data, const std::string& iv, std::string &plaintext)
{
// set decrypt key
AES_KEY aes_key;
//设置秘钥位数,只能为 128,192,256; 若key_bits为256,也可以设置key_bits为128,此时秘钥只使用了前 (128/8 = 16)位
const int key_bits = 8 * sessionkey.size();
ret = AES_set_decrypt_key((const unsigned char*)sessionkey.c_str(), key_bits, &aes_key);
if (ret != 0)
{
ERROR("AES_set_decrypt_key failed, ret: %d, key: %s, key_bits: %d", ret, sessionkey.c_str(), key_bits);
return -2;
}<