我需要在OpenPGP中创建一个嵌套消息(我的理解是协议本身应该支持它)。
假设我有Payload (“Lordran的时间是复杂的”)。
我使用公钥PK1执行通常的PGP加密例程,结果得到加密的会话密钥SK1和加密的有效载荷EncPY1。我可以将这个输出OUT1合并成一个PGP消息。
现在,我想再次做同样的事情:加密OUT1,但使用公钥PK2获取OUT2。这里的问题是,OUT1将生成一个Literal数据包,而不是Symmetrically Encrypted Data Packet。
这意味着要检索Payload,GnuPG对OUT2的解密将在两次传递(gpg -d OUT2.gpg | gpg -d)而不是一次(gpg -d OUT2.gpg)中进行。
RFC的摘录证实了理论上的可能性:
The Symmetrically Encrypted Data packet contains data encrypted with
a symmetric-key algorithm. When it has been decrypted, it contains
other packets (usually a literal data packet or compressed data
packet, but in theory other Symmetrically Encrypted Data packets or
sequences of packets that form whole OpenPGP messages).我在Go中尝试过OpenPGP实现,并且没有API来方便我所需要的东西。我想知道在Java、Python或任何其他适合我的用例的语言中是否有一个库。
到目前为止,我还没有在测试过嵌套消息创建的库中看到任何人(压缩除外)。
发布于 2020-01-30 09:53:43
我想通了。您所要做的就是使用库。所有其他库都是绝对的垃圾。
没有一个库有文档,但至少这个库不是一个30年前的C代码的绑定。
https://crypto.stackexchange.com/questions/77185
复制相似问题