Maison > développement back-end > Golang > Comment puis-je générer des paires de clés RSA dans Go, en imitant la commande « genrsa » d'OpenSSL ?

Comment puis-je générer des paires de clés RSA dans Go, en imitant la commande « genrsa » d'OpenSSL ?

Barbara Streisand
Libérer: 2024-12-15 22:08:16
original
857 Les gens l'ont consulté

How Can I Generate RSA Key Pairs in Go, Mimicking OpenSSL's `genrsa` Command?

Génération de clés RSA avec Go : réplication d'Openssl genrsa

La commande OpenSSL openssl genrsa -out $1.rsa $2 génère une paire de clés RSA et les exporte vers deux fichiers distincts, $1.rsa pour la clé privée et $1.rsa.pub pour la clé publique. En Go, ce processus consiste à :

  • Générer une paire de clés RSA
  • Extraire la clé publique
  • Convertir les clés au format PKCS#1 ASN.1 DER
  • Les coder en blocs PEM
  • Ecrire les clés de files

Le code suivant illustre ce processus :

package main

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

func main() {
    filename := "key"
    bitSize := 4096

    key, err := rsa.GenerateKey(rand.Reader, bitSize)
    if err != nil {
        panic(err)
    }
    pub := key.Public()
    keyPEM := pem.EncodeToMemory(
        &pem.Block{
            Type:  "RSA PRIVATE KEY",
            Bytes: x509.MarshalPKCS1PrivateKey(key),
        },
    )

    pubPEM := pem.EncodeToMemory(
        &pem.Block{
            Type:  "RSA PUBLIC KEY",
            Bytes: x509.MarshalPKCS1PublicKey(pub.(*rsa.PublicKey)),
        },
    )

    if err := ioutil.WriteFile(filename+".rsa", keyPEM, 0700); err != nil {
        panic(err)
    }

    if err := ioutil.WriteFile(filename+".rsa.pub", pubPEM, 0755); err != nil {
        panic(err)
    }
}
Copier après la connexion

Ce code génère le fichier de clé privée key.rsa et le fichier de clé publique key.rsa.pub. Le contenu de ces fichiers ressemble à la sortie de la commande OpenSSL.

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 de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal