如何解码 PEM 编码的 PKIX public 密钥?
How do I decode a PEM-encoded PKIX public key?
Go 的 official documentation for x509.ParsePKIXPublicKey
中给出的示例遇到运行时错误,因为 pem.Decode()
returns 的 Block
是 nil
。
(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
Go 的 official documentation for x509.ParsePKIXPublicKey
中给出的示例遇到运行时错误,因为 pem.Decode()
returns 的 Block
是 nil
。
(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