首頁  >  文章  >  後端開發  >  我正在嘗試使用 ES256 演算法建立 jwt 令牌,但我無法解析我的私鑰

我正在嘗試使用 ES256 演算法建立 jwt 令牌,但我無法解析我的私鑰

WBOY
WBOY轉載
2024-02-10 15:18:09719瀏覽

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

php小編草莓正在嘗試使用ES256演算法建立jwt令牌,但遇到了解析私鑰的問題。這是一個常見的問題,可能是由於私鑰不正確或格式不符合要求所導致的。要解決這個問題,首先需要確保私鑰是正確的,並且符合ES256演算法的要求。如果私鑰是從其他地方取得的,可以嘗試重新產生一個新的私鑰。另外,也要確保私鑰的格式正確,可以使用openssl命令列工具來驗證私鑰的格式。如果私鑰格式正確,但仍然無法解析,可能是由於其他原因,例如權限問題或環境配置問題。在解決這個問題之前,可以先檢查相關的權限和配置,以確保沒有遺漏或錯誤。

問題內容

這是我嘗試建立 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)
}

但是每次我嘗試建立令牌時都會收到此錯誤:

<code>
Error parsing private key: Invalid Key: Key must be PEM encoded PKCS1 or PKCS8 private key
</code>

有人可以建議這裡出了什麼問題嗎?

我正在嘗試使用 ES256 演算法建立 JWT,其中我需要私鑰。但不知何故我收到了錯誤。

解決方法

需要兩個修復

1-註解/刪除 pem.Decode() 它需要以位元組為單位的原始 pem 金鑰。

2-單行中的鍵字串更改鍵字串

#在此處檢查解決方案

以上是我正在嘗試使用 ES256 演算法建立 jwt 令牌,但我無法解析我的私鑰的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:stackoverflow.com。如有侵權,請聯絡admin@php.cn刪除