使用GPGME进行对称加密

时间:2016-01-25 07:25:14

标签: encryption gnupg encryption-symmetric gpgme

根据文档,GPGME的gpgme_op_encrypt方法能够执行对称加密任务:

gpgme_op_encrypt (gpgme_ctx_t ctx, gpgme_key_t recp[], gpgme_encrypt_flags_t flags, gpgme_data_t plain, gpgme_data_t cipher)
  

如果recp为NULL,则对称而不是公钥加密   执行。对称加密的密文可以解密   gpgme_op_decrypt。请注意,在这种情况下,加密后端需要   从用户检索密码。目前是对称加密   仅支持OpenPGP加密后端。

但是,用于对称加密的密钥来自哪里?是否有可能获取此密钥并将其传输到另一台设备(我想解密文本)?

1 个答案:

答案 0 :(得分:1)

session key for symmetric encryption is derived from a passphrase,将通过其中一种pinentry方法从用户查询。特别突出显示您已引用的部分文本:

  

如果recp为NULL,则执行对称而不是公钥加密。可以使用gpgme_op_decrypt对对称加密的密文进行解密。 请注意,在这种情况下,加密后端需要从用户检索密码。目前仅支持OpenPGP加密后端的对称加密。

我不知道你可以通过GPGME提取会话密钥,但你真的不需要:你需要知道的另一端是使用的密码,会话密钥可以是再来一次。你当然也可以重新实现string-to-key-function used for OpenPGP