如何解码 PEM 编码的 PKIX public 密钥?

How do I decode a PEM-encoded PKIX public key?

Go 的 official documentation for x509.ParsePKIXPublicKey 中给出的示例遇到运行时错误,因为 pem.Decode() returns 的 Blocknil。 (Playground example)

但是,official documentation for pem.Decode() runs just fine. (Playground example)

中的例子

我发现这两个示例之间的唯一区别是 public 键的初始化方式以及它们在 pem.Decode().

中的使用方式

第一个例子:

const pubPEM = `
    -----BEGIN PUBLIC KEY-----
    ...
    -----END PUBLIC KEY-----`
block, _ := pem.Decode([]byte(pubPEM))

第二个例子:

var pubPEMData = []byte(`
    -----BEGIN PUBLIC KEY-----
    ...
    -----END PUBLIC KEY-----`)
block, rest := pem.Decode(pubPEMData)

我编辑了第一个示例,使其以与第二个相同的方式完成,但这并没有改变结果。 (Playground example)

是什么原因导致第一个失败而第二个却没有?

您的字符串中有空格,删除它们即可:fixed example