根据文档,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加密后端。
但是,用于对称加密的密钥来自哪里?是否有可能获取此密钥并将其传输到另一台设备(我想解密文本)?
答案 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。