Maison >développement back-end >Golang >Comment enregistrer et charger en toute sécurité des clés RSA dans Go ?

Comment enregistrer et charger en toute sécurité des clés RSA dans Go ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-12-10 05:46:18481parcourir

How to Securely Save and Load RSA Keys in Go?

Enregistrement et chargement des clés publiques et privées RSA dans Go

Question :

Comment peut-on Je persiste et charge en toute sécurité les clés publiques et privées RSA vers et depuis le disque à l'aide du package crypto/rsa dans Allez-y ?

Réponse :

Pour enregistrer une clé privée RSA, pensez à utiliser la fonction MarshalPKCS1PrivateKey du package crypto/x509 :

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

Cette fonction convertit la clé privée au format DER (Distinguished Encoding Rules), qui peut être stockée sous forme de tableau d'octets. Pour charger la clé privée depuis DER, utilisez la fonction ParsePKCS1PrivateKey :

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

Pour les clés publiques, les fonctions MarshalPKCS1PublicKey et ParsePKCS1PublicKey ont un objectif similaire.

Encodage PEM pour le format standard :

Au lieu de stocker directement les données binaires codées en DER, il est courant d'encoder la clé privée dans un fichier PEM (Privacy-Enhanced Mail). PEM encode les données binaires en Base64 et ajoute des en-têtes et des pieds de page au fichier. Pour encoder la clé privée, utilisez la fonction pem.EncodeToMemory :

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

L'encodage PEM fournit un format standardisé pour l'échange de clés et simplifie leur gestion.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn