2012-01-05 36 views
3

我正在用C編寫通信程序,我正在尋找使用GnuPG加密的最佳方式。我已經通過mcrypt庫使用對稱加密算法,但希望加入一些公鑰功能,如果可能,最好使用GnuPG。有沒有一個好的圖書館可以做到這一點?試圖通過程序直接與GPG進行交互來完成這一點會更好嗎?任何洞察力將不勝感激,因爲我希望儘可能保持這種實施。謝謝。與C一起使用GPG?

回答

4

不幸的是,GnuPG被設計爲交互式使用,而不是API。

您提到您正在考慮納入一些公鑰功能。 SSL和TLS是GPG的替代品,它的使用頻率更高。

如果在一般的公共密鑰功能是你追求的是什麼,GnuTLS是在提供你想要什麼的基於網絡的程序使用的API。它享有很大的支持,並提供SSL和TLS公鑰加密功能。

但是,如果你是死心塌地使用GPG,GPGME是存在環繞GPG的API項目。我沒有使用它,也不能就其使用提供建議,但懷疑它可能有些被迫。

2

GPGME的確是official API for GPG,易於使用和有據可查的(在測試的例子/ GPG是非常有幫助的)

這裏是要爲約翰·史密斯加密的例子:

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