为什么我们需要在这个 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 密钥(通过频道)那么为什么我们需要恢复它?此恢复过程将什么转换为什么?
是的,这只是命名。我同意您的意见:更好的名称应该是 .GetPubBytes()
之类的名称,或者明确表示您从 public 键中获取字节的名称。
再说一遍,评论就是这么写的,网络上没啥可恢复的
请注意,对于像这样的 public 个包(托管在 github 上),godoc 页面具有指向代码的直接链接。例如:
- 如果您向下滚动到
func NewPublicKey
(this paragraph) 的文档条目,
- 单击函数的名称将带您进入 its implementation, on github——在这种特定情况下:您可以看到唯一的操作是创建一个
DHKey
结构并将字节分配给它的 y
字段,即键的 public 部分。
在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 密钥(通过频道)那么为什么我们需要恢复它?此恢复过程将什么转换为什么?
是的,这只是命名。我同意您的意见:更好的名称应该是
.GetPubBytes()
之类的名称,或者明确表示您从 public 键中获取字节的名称。再说一遍,评论就是这么写的,网络上没啥可恢复的
请注意,对于像这样的 public 个包(托管在 github 上),godoc 页面具有指向代码的直接链接。例如:
- 如果您向下滚动到
func NewPublicKey
(this paragraph) 的文档条目, - 单击函数的名称将带您进入 its implementation, on github——在这种特定情况下:您可以看到唯一的操作是创建一个
DHKey
结构并将字节分配给它的y
字段,即键的 public 部分。