2 回答
TA贡献1725条经验 获得超7个赞
由于目前无法解析标准库中的 X25519 密钥,因此您可能必须“手动”执行此操作。
您可以通过使用encoding/asn1
库来解码密钥来“正确”地完成此操作,但在这种情况下,有一种更简单的方法。
事实证明,对于私钥和公钥来说,实际密钥只是密钥的 Base64 解码块的最后 32 个字节。
所以你可以这样做:
block, _ := pem.Decode([]byte(pemString)) key := block.Bytes[len(block.Bytes)-32:]
这适用于公钥和私钥,并为您提供[]byte
包含适当密钥的 32 字节。
TA贡献1780条经验 获得超1个赞
由于之前的制表符/空格,您的内联键值格式不正确-----END PUBLIC KEY-----
结果block就是nil导致后续函数出现段错误。
这是解码部分的快速修复:
pKey := `-----BEGIN PRIVATE KEY-----
MCowBQYDK2VuAyEAfLLsWKkI/7EmTOkSf4fyHuRHDnKk6qNncWDzV8jlIUU=
-----END PRIVATE KEY-----`
block, _ := pem.Decode([]byte(pKey))
if block == nil || block.Type != "PRIVATE KEY" {
log.Fatal("failed to decode PEM block containing private key")
}
key, err := x509.ParsePKIXPublicKey(block.Bytes)
if err != nil {
log.Println("Parse PKI Error:", err)
return
}
游乐场:https://play.golang.org/p/O2wk8rmKGWH
注意:ParsePKIXPublicKey函数无法识别该密钥算法。
2009/11/10 23:00:00 解析 PKI 错误:x509:未知的公钥算法
- 2 回答
- 0 关注
- 161 浏览
添加回答
举报