Heim > Backend-Entwicklung > Golang > Wie generiert man RSA-Schlüsselpaare in Go: Ein Vergleich mit OpenSSL?

Wie generiert man RSA-Schlüsselpaare in Go: Ein Vergleich mit OpenSSL?

DDD
Freigeben: 2024-12-10 06:50:14
Original
262 Leute haben es durchsucht

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

Generieren von RSA-Schlüsseln mit Go- und Openssl-Äquivalenten

Den Openssl-Befehl verstehen

Der bereitgestellte OpenSSL-Befehl generiert einen RSA-Schlüssel Paar und speichert den privaten und den öffentlichen Schlüssel in separaten Dateien. Es werden zwei Argumente benötigt:

  • $1: Name der Schlüsseldatei (z. B. „key.rsa“)
  • $2: Größe des RSA-Schlüssels in Bits (z. B. 4096)

Umsetzung in Go

Um diese Funktionalität in Go zu replizieren, müssen wir die folgenden Schritte ausführen:

  1. Generieren Sie ein RSA-Schlüsselpaar
  2. Extrahieren Sie die öffentliche Schlüsselkomponente
  3. Schlüssel in das PKCS#1 ASN.1 DER-Format konvertieren
  4. In PEM kodieren Blöcke
  5. Schreiben Sie die Schlüssel zu Dateien

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.")
}
Nach dem Login kopieren

Ausgabe:

Das Programm erstellt zwei Dateien mit den folgenden Angaben Inhalt:

key.rsa:

-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----
Nach dem Login kopieren

key.rsa.pub:

-----BEGIN RSA PUBLIC KEY-----
...
-----END RSA PUBLIC KEY-----
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie generiert man RSA-Schlüsselpaare in Go: Ein Vergleich mit OpenSSL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage