C / C ++ crypter / décrypter avec une clé publique

Je suis à la recherche de deux fonctions similaires sur le plan conceptuel:

//returns the encrypted text
string encrypt( string public_key, string pass_phrase, string text );
//returns the original text
string decrypt( string private_key, string pass_phrase, string encrypted_text );

string pourrait être un char*un std::string ou quelque chose de facilement convertibles à ces deux-là. Et où public_key et private_key peut être pratiquement n'importe quoi, des clés générées avec certaines commandes (gpg/ssl des trucs ou quoi que ce soit), pour les clés générées avec d'autres simple fonctions.

J'ai regardé dans quelques bibliothèques de cryptographie (libgcrypt, libgpgme, openssl ...), mais il ne semble pas du tout facile à mettre en œuvre ces fonctions avec celles des bibliothèques: ils ont besoin d'une non-connaissance superficielle sur le chiffrement asymétrique et beaucoup de code.

De toute façon cette tâche ne semble pas rare.
Comment puis-je mettre en œuvre les deux fonctions ci-dessus?

source d'informationauteur peoro