牡丹AES CBC PKCS7加解密
Botan AES CBC PKCS7 encryption and decryption
我现在正在使用牡丹图书馆。
我想使用 AES/CBC 模式使用 PKCS7 填充模式加密我的文件。
Botan提供的AES/CBC解密在出错时会抛出异常,不知道是否易受padding oracle攻击
那么我应该如何执行解密过程来防止攻击?
已更新:
即使我没有return填充错误,文件也会保持不变,这可以被攻击者知道。
我的代码如下:(iv和key会适当设置)
void encrypt(std::istream &in, std::ostream &out)
{
try
{
Botan::SymmetricKey key_t(key);
Botan::InitializationVector iv_t(iv);
Botan::Pipe encryptor(Botan::get_cipher(cipher_mode, key_t, iv_t, Botan::ENCRYPTION), new Botan::DataSink_Stream(out));
encryptor.start_msg();
in >> encryptor;
encryptor.end_msg(); // flush buffers, complete computations
}
catch(...)
{
throw;
}
}
void decrypt(std::istream &in, std::ostream &out)
{
try
{
Botan::SymmetricKey key_t(key);
Botan::InitializationVector iv_t(iv);
Botan::Pipe decryptor(Botan::get_cipher(cipher_mode, key_t, iv_t, Botan::DECRYPTION), new Botan::DataSink_Stream(out));
decryptor.start_msg();
in >> decryptor;
decryptor.end_msg(); // flush buffers, complete computations
}
catch(...)
{
throw;
}
}
使用带有随机IV的CBC模式,只需在加密数据前加上用于解密的IV,不需要保密。无需传入 IV,让加密函数创建随机 IV。
我现在正在使用牡丹图书馆。
我想使用 AES/CBC 模式使用 PKCS7 填充模式加密我的文件。
Botan提供的AES/CBC解密在出错时会抛出异常,不知道是否易受padding oracle攻击
那么我应该如何执行解密过程来防止攻击?
已更新:
即使我没有return填充错误,文件也会保持不变,这可以被攻击者知道。
我的代码如下:(iv和key会适当设置)
void encrypt(std::istream &in, std::ostream &out) { try { Botan::SymmetricKey key_t(key); Botan::InitializationVector iv_t(iv); Botan::Pipe encryptor(Botan::get_cipher(cipher_mode, key_t, iv_t, Botan::ENCRYPTION), new Botan::DataSink_Stream(out)); encryptor.start_msg(); in >> encryptor; encryptor.end_msg(); // flush buffers, complete computations } catch(...) { throw; } } void decrypt(std::istream &in, std::ostream &out) { try { Botan::SymmetricKey key_t(key); Botan::InitializationVector iv_t(iv); Botan::Pipe decryptor(Botan::get_cipher(cipher_mode, key_t, iv_t, Botan::DECRYPTION), new Botan::DataSink_Stream(out)); decryptor.start_msg(); in >> decryptor; decryptor.end_msg(); // flush buffers, complete computations } catch(...) { throw; } }
使用带有随机IV的CBC模式,只需在加密数据前加上用于解密的IV,不需要保密。无需传入 IV,让加密函数创建随机 IV。