php-Editor Strawberry versucht, mit dem ES256-Algorithmus ein JWT-Token zu erstellen, stößt jedoch beim Parsen des privaten Schlüssels auf ein Problem. Dies ist ein häufiges Problem, das durch einen falschen privaten Schlüssel oder ein Format verursacht werden kann, das nicht den Anforderungen entspricht. Um dieses Problem zu lösen, müssen Sie zunächst sicherstellen, dass der private Schlüssel korrekt ist und die Anforderungen des ES256-Algorithmus erfüllt. Wenn der private Schlüssel von woanders bezogen wurde, können Sie versuchen, einen neuen privaten Schlüssel neu zu generieren. Stellen Sie außerdem sicher, dass der private Schlüssel das richtige Format hat. Sie können das Format des privaten Schlüssels mit dem OpenSSL-Befehlszeilentool überprüfen. Wenn der private Schlüssel im richtigen Format vorliegt, aber dennoch nicht analysiert werden kann, kann dies andere Gründe haben, beispielsweise Berechtigungsprobleme oder Probleme bei der Umgebungskonfiguration. Bevor Sie dieses Problem lösen, können Sie zunächst die relevanten Berechtigungen und Konfigurationen überprüfen, um sicherzustellen, dass keine Auslassungen oder Fehler vorliegen.
Dies ist mein Golang-Code, der versucht, ein JWT-Token zu erstellen
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) }
Aber jedes Mal, wenn ich versuche, ein Token zu erstellen, erhalte ich diese Fehlermeldung:
<code> Error parsing private key: Invalid Key: Key must be PEM encoded PKCS1 or PKCS8 private key </code>
Kann jemand vorschlagen, was hier falsch läuft?
Ich versuche, ein JWT mit dem ES256-Algorithmus zu erstellen, für das ich den privaten Schlüssel benötige. Aber irgendwie erhalte ich eine Fehlermeldung.
Erfordert zwei Korrekturen
1 – Kommentieren/Entfernen pem.Decode()
Es ist der ursprüngliche PEM-Schlüssel in Bytes erforderlich.
2-Tasten-Zeichenfolge in einzeiliger Änderungsschlüsselzeichenfolge
Überprüfen Sie die Lösung hier
Das obige ist der detaillierte Inhalt vonIch versuche, ein JWT-Token mit dem ES256-Algorithmus zu erstellen, kann aber meinen privaten Schlüssel nicht analysieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!