根据文档,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为空,则执行对称加密而不是公钥加密。对称加密的密码文本可以用gpgme_op_decrypt解码。请注意,在本例中,密码后端需要从用户检索密码短语。对称加密目前只支持OpenPGP密码后端。
但是,用于对称加密的密钥来自何处?是否有可能获取这个密钥并将其传输到另一个设备(我想在那里解密文本)?
发布于 2016-01-25 10:29:56
对称加密的会话密钥是从密码派生出来的。,它将通过其中一个pinentry方法从用户处查询。特别强调你已经引用的文本的一部分:
如果recp为空,则执行对称加密而不是公钥加密。对称加密的密码文本可以用gpgme_op_decrypt解码。注意,在这种情况下,密码后端需要从用户检索密码。对称加密目前只支持OpenPGP密码后端。
我不知道您可以通过GPGME提取会话密钥,但实际上并不需要:您需要知道的是在另一端使用的密码,可以再次派生会话密钥。当然,您也可以重新实现用于OpenPGP的字符串到键函数。
https://stackoverflow.com/questions/34987156
复制相似问题