2 回答

TA貢獻1725條經驗 獲得超8個贊
由于目前無法解析標準庫中的 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 關注
- 206 瀏覽
添加回答
舉報