2015-09-02 2 views
0

Я должен перегрузить класс ниже дважды. Как только я должен реализовать его с AES (Rijndael) и один раз с Twofish. Однако я не могу найти простой реализации, которая позволяет шифровать только один блок. Реализации, которые я нашел, включаются с включенными CBC и Padding. Любой намек?Библиотека AES или код для C++

#ifndef CRYPTER_H 
#define CRYPTER_H 

#include <valarray> 

class Crypter { 
public: 
    Crypter(); 
    virtual ~Crypter(); 

    //Encrypts a single block of 16 byte. 
    virtual std::valarray<unsigned char> encrypt(std::valarray<unsigned char> plaintext, 
      std::valarray<unsigned char> passphrase) = 0; 

    //Decrypts a single block of 16 byte. 
    virtual std::valarray<unsigned char> decrypt(std::valarray<unsigned char> cyphertext, 
      std::valarray<unsigned char> passphrase) = 0;  
}; 
#endif /* CRYPTER_H */ 
+0

Вы проверили OpenSSL и Crypto ++? –

+0

openssl поддерживает режим CTR, и поэтому, возможно, crypto ++ – Jens

+0

Попробуйте также PolarSSL aka mbedTLS. Существует реализация AES. – i486

ответ

1

Openssl является лучшим криптография библиотека для C/C++, и я думаю, что это, безусловно, стоит придать ему вид.

Вы всегда можете разбивать данные на блоки и шифровать/дешифровать с помощью функций библиотеки.

+1

Это не лучшая библиотека, но широко используется в Linux и т. Д. – i486

+0

@ i486: В криптографии OSS «широко используется» - это сила сама по себе. Однако OpenSSL не имеет реализации Twofish AFAIK ...? – DevSolar

+0

Нашел :-) Я могу скопировать исходный код с aes_x86core.c. Однако реализация Twofish не существует. – Aptitude