dongtuo0828
dongtuo0828
2016-07-21 20:38
浏览 165

一方面使用OpenSSL进行加密并使用CryptoPP进行解密的问题[AES-128]

I'm having some issues with encryption/decryption with different cipher suites.

On one hand, I am using PHP to encrypt a string:

base64_encode(openssl_encrypt($data, "AES-128-CBC", $password, OPENSSL_RAW_DATA, "0123456789abdefg"));

And on the other hand, I am decrypting it with CryptoPP:

std::string decrypted = decrypt(dl_notdecrypted, decryption_key, "0123456789abdefg");

The function "decrypt":

std::string decrypt(const std::string& str_in, const std::string& key, const std::string& iv)
{

    std::string str_out;
    CryptoPP::CBC_Mode<CryptoPP::AES>::Decryption decryption((byte*)key.c_str(), key.length(), (byte*)iv.c_str());
    CryptoPP::StringSource decryptor(str_in, true,
        new CryptoPP::Base64Decoder(
            new CryptoPP::StreamTransformationFilter(decryption,
                new CryptoPP::StringSink(str_out)
                )
            )
        );
    return str_out;
}

It fails with a "Unknown Exception". I am guessing this is a padding issue with OpenSSL, but I have no clue how I am supposed to fix this.

If there is any help available with this, that would be very nice.

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

相关推荐