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!