Ботан AES CBC PKCS7 шифрование и дешифрование

Я сейчас использую библиотеку Botan.

Я хотел бы зашифровать свои файлы, используя режим AES / CBC, используя режим заполнения PKCS7.

Расшифровка AES / CBC, предоставляемая Botan, выдаст исключение при возникновении ошибки, и я не уверен, уязвима ли она для атаки оракула-отступа.

Так как же мне выполнить процесс расшифровки, чтобы предотвратить атаку?

Обновлено:

  1. Даже если я не верну ошибку заполнения, файл останется без изменений, что может быть известно злоумышленнику.

  2. Мои коды следующие: (iv и ключ будут установлены соответственно)

    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;
    }
    }
    

1

Решение

Используйте режим CBC со случайным IV, просто префикс зашифрованных данных с IV для использования в расшифровке, это не должно быть секретным. Не нужно передавать в IV, пусть функция шифрования Создать случайный IV.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector