为什么我们需要在这个 Diffie Hellman Go 中的密钥交换算法中恢复 public 个密钥

Why we need recovering public keys in this Diffie Hellman Key-exchange algorithm in Go

this模块文档中(为简单起见只考虑爱丽丝这边)示例代码是:

// Get a group. Use the default one would be enough.
g, _ := GetGroup(0)

// Generate a private key from the group.
// Use the default random number generator.
priv, _ := g.GeneratePrivateKey(nil)

// Get the public key from the private key.
pub := priv.Bytes()

// Send the public key to Bob.
Send("Bob", pub)

// Receive a slice of bytes from Bob, which contains Bob's public key
b := Recv("Bob")

// Recover Bob's public key
bobPubKey := NewPublicKey(b)

// Compute the key
k, _ := group.ComputeKey(bobPubKey, priv)

// Get the key in the form of []byte
key := k.Bytes()

这是我的问题:

1)

// Get the public key from the private key.
pub := priv.Bytes()

私有字节如何用作public关键字节?这只是方法的错误命名吗? (假设 priv 包含私钥和 public 密钥,应该类似于 priv.GetPubBytes()

2)

// Receive a slice of bytes from Bob, which contains Bob's public key
b := Recv("Bob")

// Recover Bob's public key
bobPubKey := NewPublicKey(b)

如果 b 包含 Bob 的 public 密钥(通过频道)那么为什么我们需要恢复它?此恢复过程将什么转换为什么?

  1. 是的,这只是命名。我同意您的意见:更好的名称应该是 .GetPubBytes() 之类的名称,或者明确表示您从 public 键中获取字节的名称。

  2. 再说一遍,评论就是这么写的,网络上没啥可恢复的

请注意,对于像这样的 public 个包(托管在 github 上),godoc 页面具有指向代码的直接链接。例如:

  • 如果您向下滚动到 func NewPublicKey (this paragraph) 的文档条目,
  • 单击函数的名称将带您进入 its implementation, on github——在这种特定情况下:您可以看到唯一的操作是创建一个 DHKey 结构并将字节分配给它的 y 字段,即键的 public 部分。