Go语言 我尝试使用ES256算法创建jwt令牌,但我无法解析我的私钥

bsxbgnwa  于 12个月前  发布在  Go
关注(0)|答案(1)|浏览(167)

下面是我的golang代码,我试图创建JWT令牌

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)
}

但是每次我尝试创建token时都会得到这个错误:
分析私钥时出错:无效密钥:密钥必须是PEM编码的PKCS 1或PKCS 8私钥
有人能告诉我这里出了什么问题吗?
我试图使用ES256算法创建JWT,我需要私钥。但不知何故,我得到了错误。

whitzsjs

whitzsjs1#

需要两个解决方案
1-注解/删除pem.Decode()它需要原始pem关键字字节.
2-关键字串在一个单行更改关键字串
检查溶液here

相关问题