【发布时间】:2012-01-05 17:53:13
【问题描述】:
我正在用 C 编写一个通信程序,并且正在寻找使用 GnuPG 加密的最佳方法。我已经通过 mcrypt 库使用对称加密算法,但希望结合一些公钥功能,如果可能的话最好使用 GnuPG。有没有一个好的图书馆可以完成这个?尝试通过程序直接与 GPG 本身交互来完成此操作会更好吗?任何见解都将不胜感激,因为我想让这个实现尽可能干净。谢谢。
【问题讨论】:
我正在用 C 编写一个通信程序,并且正在寻找使用 GnuPG 加密的最佳方法。我已经通过 mcrypt 库使用对称加密算法,但希望结合一些公钥功能,如果可能的话最好使用 GnuPG。有没有一个好的图书馆可以完成这个?尝试通过程序直接与 GPG 本身交互来完成此操作会更好吗?任何见解都将不胜感激,因为我想让这个实现尽可能干净。谢谢。
【问题讨论】:
GPGme 确实是official API for GPG,并且易于使用且文档齐全(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);
【讨论】: