Bagaimana untuk Marshal PKCS8 Kunci Persendirian dalam Go?

Barbara Streisand
Lepaskan: 2024-10-26 15:51:03
asal
218 orang telah melayarinya

How to Marshal PKCS8 Private Keys in Go?

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)
}
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!