Maison > développement back-end > Golang > Comment générer des paires de clés RSA en Go : une comparaison avec OpenSSL ?

Comment générer des paires de clés RSA en Go : une comparaison avec OpenSSL ?

DDD
Libérer: 2024-12-10 06:50:14
original
261 Les gens l'ont consulté

How to Generate RSA Key Pairs in Go: A Comparison with OpenSSL?

Génération de clés RSA à l'aide des équivalents Go et Openssl

Comprendre la commande Openssl

La commande OpenSSL fournie génère une clé RSA paire et enregistre les clés privées et publiques dans des fichiers séparés. Il prend deux arguments :

  • $1 : Nom du fichier de clé (par exemple, "key.rsa")
  • $2 : Taille de la clé RSA en bits (par exemple, 4096)

Mise en œuvre dans Go

Pour répliquer cette fonctionnalité dans Go, nous devons effectuer les étapes suivantes :

  1. Générer une paire de clés RSA
  2. Extraire le composant clé publique
  3. Convertir les clés au format PKCS#1 ASN.1 DER
  4. Encoder en PEM blocs
  5. Écrire les clés des fichiers

Go Code :

package main

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

func main() {
    // Define filename and bit size
    filename := "key"
    bitSize := 4096

    // Generate RSA key
    key, err := rsa.GenerateKey(rand.Reader, bitSize)
    if err != nil {
        panic(err)
    }

    // Extract public key
    pub := key.Public()

    // Convert to PKCS#1 DER format
    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)),
        },
    )

    // Write keys to files
    err = ioutil.WriteFile(filename+".rsa", keyPEM, 0700)
    if err != nil {
        panic(err)
    }

    err = ioutil.WriteFile(filename+".rsa.pub", pubPEM, 0755)
    if err != nil {
        panic(err)
    }

    fmt.Println("RSA key pair generated and written to files.")
}
Copier après la connexion

Sortie :

Le programme créera deux fichiers avec les éléments suivants contenu :

key.rsa :

-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----
Copier après la connexion

key.rsa.pub :

-----BEGIN RSA PUBLIC KEY-----
...
-----END RSA PUBLIC KEY-----
Copier après la connexion

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!

source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal