我試圖加密使用加密++庫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不擁有輸出字符串。 –