【问题标题】:Using GPG with C?将 GPG 与 C 一起使用?
【发布时间】:2012-01-05 17:53:13
【问题描述】:

我正在用 C 编写一个通信程序,并且正在寻找使用 GnuPG 加密的最佳方法。我已经通过 mcrypt 库使用对称加密算法,但希望结合一些公钥功能,如果可能的话最好使用 GnuPG。有没有一个好的图书馆可以完成这个?尝试通过程序直接与 GPG 本身交互来完成此操作会更好吗?任何见解都将不胜感激,因为我想让这个实现尽可能干净。谢谢。

【问题讨论】:

    标签: c gnupg


    【解决方案1】:

    很遗憾,GnuPG 旨在以交互方式使用,而不是作为 API。

    您提到您希望合并一些公钥功能。 SSL 和 TLS 是 GPG 的替代品,使用频率更高。

    如果您通常需要公钥功能,GnuTLS 是一种用于基于网络的程序的 API,可提供您想要的功能。它享有大量支持,并提供 SSL 和 TLS 公钥加密功能。

    但是,如果您不喜欢使用 GPG,GPGME 是一个用于围绕 GPG 包装 API 的项目。我没有使用过,也无法就其使用提供建议,但怀疑它可能有些强迫。

    【讨论】:

      【解决方案2】:

      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);
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-18
        • 2010-11-01
        相关资源
        最近更新 更多