Rumah >pembangunan bahagian belakang >Golang >Bagaimana untuk Menyimpan dan Memuatkan Kunci RSA dengan Selamat dalam Go?

Bagaimana untuk Menyimpan dan Memuatkan Kunci RSA dengan Selamat dalam Go?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-12-10 05:46:18484semak imbas

How to Securely Save and Load RSA Keys in Go?

Menyimpan dan Memuatkan Kunci Awam dan Peribadi RSA dalam Go

Soalan:

Bagaimana boleh Saya bertahan dengan selamat dan memuatkan kunci awam dan peribadi RSA ke dan dari cakera menggunakan pakej crypto/rsa masuk Pergi?

Jawapan:

Untuk menyimpan kunci peribadi RSA, pertimbangkan untuk menggunakan fungsi MarshalPKCS1PrivateKey daripada pakej crypto/x509:

func MarshalPKCS1PrivateKey(key *rsa.PrivateKey) []byte

Fungsi ini menukar kunci persendirian ke dalam format DER (Distinguished Encoding Rules), yang boleh disimpan sebagai tatasusunan bait. Untuk memuatkan kunci persendirian daripada DER, gunakan fungsi ParsePKCS1PrivateKey:

func ParsePKCS1PrivateKey(der []byte) (key *rsa.PrivateKey, err error)

Untuk kunci awam, fungsi MarshalPKCS1PublicKey dan ParsePKCS1PublicKey mempunyai tujuan yang sama.

Pengekodan PEM untuk Format Standard :

Sebaliknya menyimpan data binari yang dikodkan DER secara langsung, adalah perkara biasa untuk mengekod kunci peribadi ke dalam fail PEM (Mel Dipertingkatkan Privasi). PEM mengodkan data binari menggunakan Base64 dan menambah pengepala dan pengaki pada fail. Untuk mengekod kunci persendirian, gunakan fungsi pem.EncodeToMemory:

pemdata := pem.EncodeToMemory(
    &pem.Block{
        Type: "RSA PRIVATE KEY",
        Bytes: x509.MarshalPKCS1PrivateKey(key),
    },
)

Pengekodan PEM menyediakan format piawai untuk menukar kunci dan memudahkan pengendaliannya.

Atas ialah kandungan terperinci Bagaimana untuk Menyimpan dan Memuatkan Kunci RSA dengan Selamat dalam Go?. 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