Je ne dirais pas que je "sais que mon truc" trop à ce sujet, mais Voici un code de test que j'ai mis ensemble pour crypter/décrypter des chaînes avec AES. L'étendre à d'autres données ne devrait pas être trop difficile.
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;
Tout en travaillant sur ce point, je trouve le code source dans le programme de test de Crypto (le projet VisualStudio appelé « cryptest ») pour être d'une grande aide. C'était un peu difficile à lire au début, mais ça devient plus facile quand on travaille avec. J'ai aussi beaucoup d'aide pour comprendre les modes de chiffrement par blocs disponibles de Wikipedia (http://en.wikipedia.org/wiki/Block_cipher_modes_of_operation).
L'expérience a montré que les API actuelles de crypto sont dangereuses pour les noobs. Les comprendre semble exiger beaucoup de connaissances * crypto * qui ne peuvent être apprises dans un guide de démarrage rapide. –
indigoOrange - gardez à l'esprit que le cryptage seul est rarement suffisant. Vous voulez généralement un mode de cryptage authentifié. En l'absence d'autres informations, vous préférez presque toujours les modes 'EAX',' GCM' ou 'CCM' sur d'autres modes comme le mode' CBC'. Et vous évitez presque toujours le mode 'ECB' comme la peste parce qu'il perd la sécurité sémantique lorsque vous réutilisez la clé de chiffrement ou cryptez plus d'un bloc. – jww