Rumah > pembangunan bahagian belakang > Golang > Bagaimana untuk Menjana Pasangan Kunci RSA dalam Go: Perbandingan dengan OpenSSL?

Bagaimana untuk Menjana Pasangan Kunci RSA dalam Go: Perbandingan dengan OpenSSL?

DDD
Lepaskan: 2024-12-10 06:50:14
asal
301 orang telah melayarinya

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

Menjana Kekunci RSA Menggunakan Go dan Setara Openssl

Memahami Perintah Openssl

Arahan OpenSSL yang disediakan menjana kunci RSA berpasangan dan menyimpan kunci peribadi dan awam untuk memisahkan fail. Ia memerlukan dua hujah:

  • $1: Nama fail kunci (cth., "key.rsa")
  • $2: Saiz kunci RSA dalam bit (cth., 4096)

Melaksanakan dalam Go

Untuk meniru fungsi ini dalam Go, kita perlu melakukan langkah berikut:

  1. Jana pasangan kunci RSA
  2. Ekstrak komponen kunci awam
  3. Tukar kunci kepada PKCS#1 ASN.1 DER format
  4. Enkodkan ke dalam blok PEM
  5. Tulis kekunci pada fail

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.")
}
Salin selepas log masuk

Output:

Program ini akan mencipta dua fail dengan yang berikut kandungan:

key.rsa:

-----BEGIN RSA PRIVATE KEY-----
...
-----END RSA PRIVATE KEY-----
Salin selepas log masuk

key.rsa.pub:

-----BEGIN RSA PUBLIC KEY-----
...
-----END RSA PUBLIC KEY-----
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk Menjana Pasangan Kunci RSA dalam Go: Perbandingan dengan OpenSSL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan