Я бы не сказал, что я слишком много знаю об этом, но вот несколько тестовых кодов, которые я собрал для шифрования / дешифрования строк с помощью AES. Расширение использования других данных не должно быть слишком сложным.
string output;
CTR_Mode<AES>::Encryption encrypt((const byte*)key,AES::DEFAULT_KEYLENGTH,(const byte*)iv);
StringSource(plaintext, true, new StreamTransformationFilter(encrypt, new StringSink(output)));
cout << "Encrypted: " << output << endl;
string res;
CTR_Mode<AES>::Decryption decrypt((const byte*)key,AES::DEFAULT_KEYLENGTH,(const byte*)iv);
StringSource(output, true, new StreamTransformationFilter(decrypt, new StringSink(res)));
cout << "Decrypted: " << res << endl;
Работая над этим, я обнаружил, что исходный код в тестовой программе Crypto ++ (проект VisualStudio, называемый «cryptest») очень помог Поначалу читать было немного сложно, но с ним становится легче. Я также получил большую помощь в понимании доступных режимов блочного шифрования из Википедии (http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation).