【发布时间】:2019-10-21 06:40:24
【问题描述】:
我正在尝试使用具有 CCM 操作模式的 AES128 密码在 Crypto++ 库中执行加密和解密。当我尝试加密长度超过 16777215 字节的字符串时遇到问题。
我的代码:
const int TAG_SIZE = 8;
CCM< AES, TAG_SIZE >::Encryption e;
CCM< AES, TAG_SIZE >::Decryption d;
e.SetKeyWithIV( key, sizeof(key), iv, sizeof(iv) );
e.SpecifyDataLengths( 0, plain.size(), 0 );
//Encryption
StringSource ss1(
plain,
true,
new AuthenticatedEncryptionFilter(
e,
new StringSink(cipher)
)
);
d.SetKeyWithIV( key, sizeof(key), iv, sizeof(iv) );
d.SpecifyDataLengths( 0, plain.size(), 0 );
//Decryption
AuthenticatedDecryptionFilter df( d,
new StringSink(recovered)
);
StringSource ss2(
cipher,
true,
new Redirector(df)
);
当我尝试加密/解密 CD 大小的纯文本 (737280000) 时,我收到以下错误:
"在抛出 'CryptoPP::InvalidArgument' 的实例后调用终止 what(): AES/CCM: 消息长度 737280000 超过最大值 16777215"
我的问题是,如何加密/解密长度超过 16777215 字节的明文?
【问题讨论】:
标签: c++ encryption crypto++