这是我尝试创建 JWT 令牌的 golang 代码
package main import ( "encoding/pem" "fmt" "time" "github.com/dgrijalva/jwt-go" ) func main() { // Sample PEM-encoded private key pemKey := `-----BEGIN EC PRIVATE KEY-----MHcCAQEEIAh5qA3rmqQQuu0vbKV/+zouz/y/Iy2pLpIcWUSyImSwoAoGCCqGSM49AwEHoUQDQgAEYD54V/vp+54P9DXarYqx4MPcm+HKRIQzNasYSoRQHQ/6S6Ps8tpMcT+KvIIC8W/e9k0W7Cm72M1P9jU7SLf/vg==-----END EC PRIVATE KEY-----` // Convert the PEM-encoded private key to a byte slice pemBytes, _ := pem.Decode([]byte(pemKey)) // // Parse and decode the private key key, err := jwt.ParseECPrivateKeyFromPEM(pemBytes.Bytes) if err != nil { fmt.Println("Error parsing private key:", err) return } uAccessToken := jwt.NewWithClaims(jwt.SigningMethodES256, jwt.MapClaims{ "iss": "issuer", "sub": "access token", "exp": time.Now().Add(time.Minute * 20).Unix(), }) AccessToken, err := uAccessToken.SignedString(key); if err != nil { fmt.Println("Error signing token:", err) return } // // You now have the ECDSA private key available in the 'key' variable fmt.Println("ECDSA Private Key:", AccessToken) }
但是每次我尝试创建令牌时都会收到此错误:
Error parsing private key: Invalid Key: Key must be PEM encoded PKCS1 or PKCS8 private key
有人可以建议这里出了什么问题吗?
我正在尝试使用 ES256 算法创建 JWT,其中我需要私钥。但不知何故我收到了错误。
需要两个修复
1-注释/删除 pem.Decode()
它需要以字节为单位的原始 pem 密钥。
2-单行中的键字符串更改键字符串