我试图加密使用加密++库API,版本5.6.0提供AES加密的字符串,静态抛出异常:写入访问冲突。这是0xDDDDDDDD
string AESEncryptor::encrypt(const string& plain)
{
string ciphertext_buffer;
// Hex decode symmetric key:
HexDecoder decoder;
decoder.Put((byte *)PRIVATE_KEY, 32 * 2);
decoder.MessageEnd();
word64 size = decoder.MaxRetrievable();
char *decoded_key = new char[size];
decoder.Get(reinterpret_cast<byte*>(decoded_key), size);
// Generate Cipher, Key, and CBC
byte key[AES::MAX_KEYLENGTH], iv[AES::BLOCKSIZE];
StringSource(reinterpret_cast<const char *>(decoded_key), true,
new HashFilter(*(new SHA256), new ArraySink(key, AES::MAX_KEYLENGTH)));
memset(iv, 0x00, AES::BLOCKSIZE);
CBC_Mode<AES>::Encryption Encryptor(key, sizeof(key), iv);
StringSource(plain, true,
new StreamTransformationFilter(Encryptor, new HexEncoder(new StringSink(ciphertext_buffer))));
return ciphertext_buffer;
}
挂在我收到以下异常的函数退出,同时努力调用std :: string移动构造函数返回值:
抛出异常:写入访问冲突。这是0xDDDDDDDD。
活像StringSink“拥有”返回的std :: string某种方式并试图恢复之前删除它,但是我试图把它分配给其他的std :: string,并得到了同样的异常。而返回其他任何字符串出现
同样的异常,因此它似乎内存崩溃某种程度上
该文档明确指出StringSink不拥有输出字符串。 –