Схема 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;