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

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

Susan Sarandon
Susan Sarandonoriginal
2024-12-14 15:49:14836parcourir

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

Utilisez Go pour générer des clés RSA de la même manière qu'Openssl

La commande OpenSSL openssl genrsa génère une paire de clés RSA, stockant le clé privée dans un fichier et clé publique dans un autre. Pour obtenir cette fonctionnalité dans Go, vous pouvez suivre ces étapes :

  1. Générer la paire de clés RSA :
import "crypto/rand"

key, err := rsa.GenerateKey(rand.Reader, bitSize)
if err != nil {
    panic(err)
}
  1. Extraire le public clé :
import "crypto/rsa"

pub := key.Public()
  1. Encoder les clés au format PEM :
import (
    "encoding/pem"
    "crypto/x509"
)

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)),
    },
)
  1. Écrivez les clés codées PEM dans files :
import "io/ioutil"

err := ioutil.WriteFile(filename+".rsa", keyPEM, 0700)
err := ioutil.WriteFile(filename+".rsa.pub", pubPEM, 0755)

Ce code générera deux fichiers, filename.rsa et filename.rsa.pub, contenant respectivement les clés RSA privées et publiques. Les clés seront au format PEM, ce qui vous permettra de les importer et de les utiliser facilement avec d'autres applications.

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