Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Memuatkan Kunci RSA dari Fail untuk Menandatangani JWT Selamat?

Bagaimana untuk Memuatkan Kunci RSA dari Fail untuk Menandatangani JWT Selamat?

Susan Sarandon
Susan Sarandonasal
2024-11-08 18:47:02794semak imbas

How to Load RSA Keys from Files for Secure JWT Signing?

Memuatkan Kunci RSA daripada Fail untuk Tandatangan JWT Selamat

Menandatangani JWT selalunya memerlukan penggunaan kunci peribadi RSA untuk pengesahan dan pengesahan integriti. Untuk memanfaatkan kunci ini, adalah penting untuk memahami proses mengekstraknya daripada fail.

Kunci Peribadi RSA Dikodkan PEM

Format yang paling biasa untuk menyimpan peribadi RSA kunci ialah pengekodan PEM, dilambangkan dengan "-----MULAKAN KUNCI PERSENDIRIAN RSA-----" dan "-----END RSA KUNCI PERSENDIRIAN-----" pengepala dan pengaki. Untuk memuatkan kunci berkod PEM, anda boleh menggunakan langkah berikut:

import (
    "crypto/x509"
    "encoding/pem"
)

func LoadPEMKey(file string) (*x509.PrivateKey, error) {
    pemBytes, err := os.ReadFile(file)
    if err != nil {
        return nil, err
    }

    block, _ := pem.Decode(pemBytes)
    return x509.ParsePKCS1PrivateKey(block.Bytes)
}

Kunci Peribadi RSA Dikodkan PKCS#8

PKCS#8 ialah satu lagi format popular untuk menyimpan kunci peribadi RSA. Ia sering digunakan bersama dengan format PKCS#12 untuk menyimpan kunci dan sijil dalam satu fail. Untuk memuatkan kunci berkod PKCS#8, ikut langkah berikut:

import (
    "crypto/rsa"
    "crypto/x509"
    "encoding/pem"
)

func LoadPKCS8Key(file string) (*rsa.PrivateKey, error) {
    pemBytes, err := os.ReadFile(file)
    if err != nil {
        return nil, err
    }

    block, _ := pem.Decode(pemBytes)
    return x509.ParsePKCS8PrivateKey(block.Bytes)
}

Contoh Penggunaan

Setelah anda memuatkan kunci peribadi RSA ke dalam struktur, anda boleh menggunakannya untuk menandatangani JWT dan mengesahkan tandatangan. Contohnya:

import (
    "crypto/rsa"
    "crypto/x509"
    "encoding/json"

    "github.com/golang-jwt/jwt/v4"
)

func SignJWT(keyFile string, claims map[string]interface{}) (string, error) {
    key, err := LoadPEMKey(keyFile)
    if err != nil {
        return "", err
    }

    token := jwt.NewWithClaims(jwt.SigningMethodRS512, jwt.MapClaims(claims))
    return token.SignedString(key)
}

Dengan menggunakan teknik ini, anda boleh memanfaatkan kunci peribadi RSA yang disimpan dalam fail dengan berkesan untuk tujuan pengesahan dan kebenaran JWT.

Atas ialah kandungan terperinci Bagaimana untuk Memuatkan Kunci RSA dari Fail untuk Menandatangani JWT Selamat?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn