将GPG与C一起使用?

maj*_*nie 5 c gnupg

我正在用C编写通信程序,我正在寻找使用GnuPG加密的最佳方法.我已经通过mcrypt库使用对称加密算法,但希望结合一些公钥功能,如果可能的话,最好使用GnuPG.有没有一个好的图书馆可以完成这个?尝试直接通过程序与GPG本身进行交互以实现这一目标会更好吗?任何见解都将受到赞赏,因为我希望尽可能保持这种实施.谢谢.

Swi*_*iss 5

不幸的是,GnuPG旨在以交互方式使用,而不是作为API使用.

您提到您希望合并一些公钥功能.SSL和TLS是GPG的替代品,可以更频繁地使用.

如果公共密钥功能通常是您所寻求的,GnuTLS是一种用于基于网络的程序的API,可以提供您想要的内容.它享有很多支持,并提供SSL和TLS公钥加密功能.

但是,如果你没有使用GPG,那么GPGME就是一个用于围绕GPG封装API的项目.我没有使用它,也无法就其使用提出建议,但怀疑它可能有点被迫.


bor*_*yer 5

GPGme 确实是GPG官方 API,易于使用且文档齐全(tests/gpg 中的示例非常有用)

以下是为 John Smith 加密的示例:

gpgme_data_t clear_text, encrypted_text;
gpgme_key_t recipients[2] = {NULL, NULL}; 
       /* The array must be NULL-terminated */
...
error = gpgme_op_keylist_start(context, "John Smith", 1);
error = gpgme_op_keylist_next(context, &recipients[0]);
...
error = gpgme_op_encrypt(context, recipients, 
               GPGME_ENCRYPT_ALWAYS_TRUST, 
                           clear_text, encrypted_text);
Run Code Online (Sandbox Code Playgroud)