我的测试应用程序中有一些代码:

char* buff = new char[0];
f_hStream.read(buff, size);
string cut_header = zCrypto::from_base64( string(buff, size) );

if ( cut_header.length() == 0 ) break;

const char* dec = zCrypto::decrypt( cut_header );
printf( "Header >> %s\n", dec );
vector<string> header = split(string(dec), ';');


decrypt功能>

const char* zCrypto::decrypt(const std::string& str_in) {
    const string key = zCrypto::from_base64("<base_64line_here>");
    const string iv = zCrypto::from_base64("<base_64line_here>");

    std::string str_out;
    CryptoPP::CBC_Mode<CryptoPP::Rijndael>::Decryption decryption((byte*)key.c_str(), key.length(), (byte*)iv.c_str());

    CryptoPP::StringSource encryptor(str_in, true,
        new CryptoPP::StreamTransformationFilter(decryption,
            new CryptoPP::StringSink(str_out)
        )
    );

    return str_out.data();
}


而且我在const char * dec = zCrypto :: decrypt(cut_header)行上遇到调试器错误;如果我尝试在没有MVS调试器的情况下启动应用程序,他将崩溃-Application has stopped working...

附言我无法从/ MT更改Code Generation-Runtime Library,我的应用程序中的cryptopp函数只能使用该类型进行编译,而不会出现错误。

解密也可以,我做错了什么?

更新:

我改变

const char* zCrypto::decrypt(const std::string& str_in) {




string zCrypto::decrypt(const std::string& str_in) {




char* buff = new char[0];
const char* dec = zCrypto::decrypt( cut_header );




char* buff = new char[size];
string dec = zCrypto::decrypt( cut_header );


我仍然遇到错误。

最佳答案

这条线听起来不正确。

char* buff = new char[0];


您可能需要:

char* buff = new char[size];

09-30 14:52