Rumah >pembangunan bahagian belakang >Golang >Bagaimanakah Saya Boleh Menjana Pasangan Kunci RSA dalam Go, Sama seperti Perintah `openssl genrsa` OpenSSL?

Bagaimanakah Saya Boleh Menjana Pasangan Kunci RSA dalam Go, Sama seperti Perintah `openssl genrsa` OpenSSL?

Susan Sarandon
Susan Sarandonasal
2024-12-14 15:49:14837semak imbas

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

Gunakan Go to Generate RSA Keys dengan Cara Yang Sama seperti Openssl

Arahan OpenSSL openssl genrsa menjana sepasang kunci RSA, menyimpan kunci peribadi dalam satu fail dan kunci awam dalam fail lain. Untuk mencapai fungsi ini dalam Go, anda boleh mengikuti langkah berikut:

  1. Jana pasangan kunci RSA:
import "crypto/rand"

key, err := rsa.GenerateKey(rand.Reader, bitSize)
if err != nil {
    panic(err)
}
  1. Ekstrak orang ramai kunci:
import "crypto/rsa"

pub := key.Public()
  1. Ekodkan kunci dalam 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. Tulis kunci berkod PEM ke fail:
import "io/ioutil"

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

Kod ini akan menghasilkan dua fail, nama fail.rsa dan nama fail.rsa.pub, masing-masing mengandungi kunci RSA peribadi dan awam. Kekunci akan berada dalam format PEM, yang membolehkan anda mengimport dan menggunakannya dengan mudah dengan aplikasi lain.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menjana Pasangan Kunci RSA dalam Go, Sama seperti Perintah `openssl genrsa` OpenSSL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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