Heim >Backend-Entwicklung >Golang >Wie kann ich RSA-Schlüsselpaare in Go generieren, ähnlich dem OpenSSL-Befehl „openssl genrsa'?

Wie kann ich RSA-Schlüsselpaare in Go generieren, ähnlich dem OpenSSL-Befehl „openssl genrsa'?

Susan Sarandon
Susan SarandonOriginal
2024-12-14 15:49:14837Durchsuche

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

Verwenden Sie Go, um RSA-Schlüssel auf die gleiche Weise wie Openssl zu generieren

Der OpenSSL-Befehl openssl genrsa generiert ein Paar RSA-Schlüssel und speichert die Der private Schlüssel befindet sich in einer Datei und der öffentliche Schlüssel in einer anderen. Um diese Funktionalität in Go zu erreichen, können Sie die folgenden Schritte ausführen:

  1. Generieren Sie das RSA-Schlüsselpaar:
import "crypto/rand"

key, err := rsa.GenerateKey(rand.Reader, bitSize)
if err != nil {
    panic(err)
}
  1. Extrahieren Sie die Öffentlichkeit Schlüssel:
import "crypto/rsa"

pub := key.Public()
  1. Kodieren Sie die Schlüssel im PEM-Format:
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. Schreiben Sie die PEM-codierten Schlüssel hinein Dateien:
import "io/ioutil"

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

Dieser Code generiert zwei Dateien, filename.rsa und filename.rsa.pub, die jeweils den privaten und den öffentlichen RSA-Schlüssel enthalten. Die Schlüssel liegen im PEM-Format vor, sodass Sie sie problemlos importieren und mit anderen Anwendungen verwenden können.

Das obige ist der detaillierte Inhalt vonWie kann ich RSA-Schlüsselpaare in Go generieren, ähnlich dem OpenSSL-Befehl „openssl genrsa'?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn