首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是PGP密钥?

什么是PGP密钥?
EN

Stack Overflow用户
提问于 2015-01-12 08:03:45
回答 2查看 10.5K关注 0票数 1

我正在开发一个C#应用程序,它使用Bouncy Castle (BC)库实现的PGP对消息进行加密/解密。我知道PKI,但是PGP中的密钥让我有点迷惑。我查看了BC示例/源代码和PGP RFC,但提出了更多问题。

Secretkey是==会话密钥吗?

Secretkey ==是否是对称密钥?

Secretkey是否为==私钥(pub/priv密钥对)?至少下面的内容似乎表明该密钥是一个私钥。

代码语言:javascript
复制
internal static PgpPrivateKey FindSecretKey(PgpSecretKeyRingBundle pgpSec, long keyID, char[] pass)

RFC表示,私钥包含有关公钥的信息,或者可能是公钥本身(至少我是这么认为的)。

另外,我在某些地方读到Secretkey基本上是一个密码加密的私有密钥。

在PGP协议中,我何时/为什么需要密钥?签名还是加密?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-01-12 16:41:51

引用RFC 4880, OpenPGP, 5.5.1.3. Secret-Key Packet

秘密密钥包包含在公开密钥包中找到的所有信息,包括公开密钥材料,但也包括在所有公开密钥字段之后的秘密密钥材料。

11.2. Transferable Secret Keys

...除了使用秘密密钥和秘密子密钥包而不是公共密钥和公共子密钥包之外,可转移秘密密钥的格式与可转移公共密钥相同。实现应该包括对任何用户ID和子键的自签名,...

换句话说,密钥包含公钥/私钥对(例如RSA),但也应该包含用户ID和自签名。12.1. Key Structures提供了有关如何构造导出密钥的更多详细信息。gpg --list-packets [file]pgpdump [file]是理解OpenPGP数据包组成的一个有用工具,它们会转储其输入的数据包结构。

票数 5
EN

Stack Overflow用户

发布于 2015-01-12 09:39:27

在这种情况下,密钥是私钥。私钥可用于签名或解密。使用另一方的公钥执行加密和验证。如今,秘密密钥通常被认为是对称密钥,但它也可以是私有的,特别是在较旧的协议中。

密码学中有很多这样的混淆,最好的做法是查看上下文。例如,如果存在公钥,则该密钥不能是对称的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27893569

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档