Heim >Backend-Entwicklung >Golang >Wie speichere und lade ich RSA-Schlüssel sicher in Go?

Wie speichere und lade ich RSA-Schlüssel sicher in Go?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-10 05:46:18481Durchsuche

How to Securely Save and Load RSA Keys in Go?

Öffentliche und private RSA-Schlüssel in Go speichern und laden

Frage:

Wie kann Ich behalte die öffentlichen und privaten RSA-Schlüssel sicher bei und lade sie mithilfe des crypto/rsa-Pakets auf und von der Festplatte Los?

Antwort:

Um einen privaten RSA-Schlüssel zu speichern, sollten Sie die Funktion MarshalPKCS1PrivateKey aus dem Paket crypto/x509 verwenden:

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

Diese Funktion wandelt den privaten Schlüssel in ein DER-Format (Distinguished Encoding Rules) um, das als Byte gespeichert werden kann Array. Um den privaten Schlüssel aus DER zu laden, verwenden Sie die Funktion ParsePKCS1PrivateKey:

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

Für öffentliche Schlüssel dienen die Funktionen MarshalPKCS1PublicKey und ParsePKCS1PublicKey einem ähnlichen Zweck.

PEM-Codierung für das Standardformat :

Anstatt zu lagern Um die DER-kodierten Binärdaten direkt zu übertragen, ist es üblich, den privaten Schlüssel in eine PEM-Datei (Privacy-Enhanced Mail) zu kodieren. PEM kodiert Binärdaten mit Base64 und fügt der Datei Kopf- und Fußzeilen hinzu. Um den privaten Schlüssel zu kodieren, verwenden Sie die Funktion pem.EncodeToMemory:

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

PEM-Kodierung bietet ein standardisiertes Format für den Austausch von Schlüsseln und vereinfacht deren Handhabung.

Das obige ist der detaillierte Inhalt vonWie speichere und lade ich RSA-Schlüssel sicher in Go?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn