Схема Crypto++ DefaultEncryptor/DefaultDecryptor

Я пытаюсь зашифровать файл с помощью AES с помощью crypto++. Я вижу функции EncryptFile и DecryptFile, которые используют DefaultEncryptorWithMAC/DefaultDecryptorWithMAC из test.cpp в crypto++.

void EncryptFile(const char *in, const char *out, const char *passPhrase)
{   
    FileSource f(in, true, new DefaultEncryptorWithMAC(passPhrase, new FileSink(out)));
}

void DecryptFile(const char *in, const char *out, const char *passPhrase)
{
   FileSource f(in, true, new DefaultDecryptorWithMAC(passPhrase, new FileSink(out)));
}

Однако я хочу использовать AES, и, насколько я понимаю, схема шифрования по умолчанию - DES_EDE2. Есть ли способ справиться с этим?

Мне не нужен MAC, поэтому что-то похожее на пару классов DefaultEncryptor/DefaultDecryptor было бы достаточно хорошо.

Также я бы предпочел использовать случайный SecByteBlock вместо ключевой фразы, как показано ниже

// Generate a random key
SecByteBlock key(0x00, AES::DEFAULT_KEYLENGTH);
rnd.GenerateBlock( key, key.size() );

1 ответ

Однако я хочу использовать AES, и, насколько я понимаю, схема шифрования по умолчанию - DES_EDE2. Есть ли способ справиться с этим?

Проект изменил настройки по умолчанию. Заинтересованность - это Commit bfbcfeec7ca7, а проблема интереса - Issue 345. Он будет доступен в Crypto++ 5.7. Для тех, кому нужны старые алгоритмы, они могут использовать LegacyEncryptor, LegacyDecryptor, LegacyEncryptorWithMAC а также LegacyDecryptorWithMAC,

Mash функция была сохранена, чтобы сделать вещи менее сложными. Если бы это были новые классы, они бы использовали HKDF извлекать и расширять энтропию; и использовал PBKDF для измельчения полученного ключа. Поскольку и старая, и новая нуждалась в поддержке, мы выбрали решение с одним источником. Насколько я знаю, функция mash отвечает целям безопасности.

Если вы не используете Master, вы также можете изменить следующие typedfs в default.h на ваш вкус. Тем не менее, вам нужно будет перекомпилировать библиотеку впоследствии:

  • typedef DES_EDE2 DefaultBlockCipher;
  • typedef SHA DefaultHashModule;
  • typedef HMAC<DefaultHashModule> DefaultMAC;
Другие вопросы по тегам