我的测试应用程序中有一些代码:
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];