Marshaling PKCS8 Private Keys in Go
In Go, persoalan sama ada terdapat cara mudah untuk mengawal kunci peribadi PKCS8 dalam versi 1.5 timbul . Sama seperti fungsi x509.MarshalPKCS1PrivateKey, pembangun mencari mekanisme yang cekap untuk menukar kunci peribadi kepada data bersiri.
Walaupun Go tidak menyediakan fungsi terbina dalam untuk tujuan khusus ini, terdapat penyelesaian tersuai yang menangani perkara ini keperluan:
type pkcs8Key struct { Version int PrivateKeyAlgorithm []asn1.ObjectIdentifier PrivateKey []byte } func rsa2pkcs8(key *rsa.PrivateKey) ([]byte, error) { var pkey pkcs8Key pkey.Version = 0 // Default version for PKCS8 pkey.PrivateKeyAlgorithm = make([]asn1.ObjectIdentifier, 1) pkey.PrivateKeyAlgorithm[0] = asn1.ObjectIdentifier{1, 2, 840, 113549, 1, 1, 1} // RSA encryption algorithm OID pkey.PrivateKey = x509.MarshalPKCS1PrivateKey(key) return asn1.Marshal(pkey) }
Fungsi tersuai ini, rsa2pkcs8, membolehkan anda menukar objek rsa.PrivateKey kepada tatasusunan bait berkod PKCS8. Ia menetapkan versi kepada 0, menentukan algoritma penyulitan RSA OID dan membenamkan kunci peribadi PKCS1 yang dimarshallkan ke dalam medan PrivateKey bagi struktur pkcs8Key. Dengan memanggil asn1.Marshal pada struktur ini, anda memperoleh data bersiri yang mewakili kunci persendirian PKCS8.
Menggunakan penyelesaian ini memperkasakan pembangun Go dengan keupayaan untuk mengawal kunci persendirian PKCS8, memberikan mereka utiliti yang mudah untuk pelbagai kriptografi. operasi dan senario pertukaran data.
Atas ialah kandungan terperinci Bagaimana untuk Marshal PKCS8 Kunci Persendirian dalam Go?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!