Maison >développement back-end >Golang >Comment générer des paires de clés RSA dans Go et les écrire dans des fichiers séparés ?

Comment générer des paires de clés RSA dans Go et les écrire dans des fichiers séparés ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-16 13:35:10462parcourir

How to Generate RSA Key Pairs in Go and Write Them to Separate Files?

Génération de clés RSA dans Go Like openssl genrsa

Présentation

La commande openssl genrsa génère des clés RSA. Nous pouvons obtenir la même fonctionnalité dans Go en utilisant le package crypto/rsa. Cet article fournit une procédure détaillée sur la façon de générer des paires de clés RSA et de les écrire dans des fichiers séparés dans Go.

Guide étape par étape

1. Importer les bibliothèques nécessaires

import (
    "crypto/rand"
    "crypto/rsa"
    "crypto/x509"
    "encoding/pem"
    "io/ioutil"
)

2. Générer une paire de clés

filename := "key"
bitSize := 4096

// Generate RSA keypair
key, err := rsa.GenerateKey(rand.Reader, bitSize)

3. Extraire le composant public

pub := key.Public()

4. Encoder en PEM

// Encode private key to PKCS#1 ASN.1 PEM
keyPEM := pem.EncodeToMemory(
    &pem.Block{
        Type:  "RSA PRIVATE KEY",
        Bytes: x509.MarshalPKCS1PrivateKey(key),
    },
)

// Encode public key to PKCS#1 ASN.1 PEM
pubPEM := pem.EncodeToMemory(
    &pem.Block{
        Type:  "RSA PUBLIC KEY",
        Bytes: x509.MarshalPKCS1PublicKey(pub.(*rsa.PublicKey)),
    },
)

5. Écrire dans les fichiers

// Write private key to file
if err := ioutil.WriteFile(filename+".rsa", keyPEM, 0700); err != nil {
    panic(err)
}

// Write public key to file
if err := ioutil.WriteFile(filename+".rsa.pub", pubPEM, 0755); err != nil {
    panic(err)
}

Conclusion

En suivant les étapes décrites ci-dessus, vous pouvez facilement générer des paires de clés RSA et les écrire dans des fichiers séparés dans Go, de la même manière que la commande openssl genrsa. Ce guide complet fournit une base solide pour travailler avec les clés RSA dans vos applications Go.

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