首頁 > 後端開發 > Golang > 如何在 Go 中產生 RSA 金鑰對,模仿 OpenSSL 的「genrsa」指令?

如何在 Go 中產生 RSA 金鑰對,模仿 OpenSSL 的「genrsa」指令?

Barbara Streisand
發布: 2024-12-15 22:08:16
原創
759 人瀏覽過

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

使用Go 產生RSA 金鑰:複製Openssl genrsa

OpenSSL RSApsl genrsa -out $1.rsa $將它們匯出到兩個單獨的文件,$1.rsa 用於私鑰, $1.rsa.pub 用於公鑰。在Go 中,此過程涉及:

  • 產生RSA 金鑰對
  • 擷取公鑰
  • 將金鑰轉換為PKCS#1 ASN.1 DER 格式
  • 將它們編碼為PEM區塊
  • 將金鑰寫入files

以下程式碼示範了此過程:

package main

import (
    "crypto/rand"
    "crypto/rsa"
    "crypto/x509"
    "encoding/pem"
    "io/ioutil"
)

func main() {
    filename := "key"
    bitSize := 4096

    key, err := rsa.GenerateKey(rand.Reader, bitSize)
    if err != nil {
        panic(err)
    }
    pub := key.Public()
    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)),
        },
    )

    if err := ioutil.WriteFile(filename+".rsa", keyPEM, 0700); err != nil {
        panic(err)
    }

    if err := ioutil.WriteFile(filename+".rsa.pub", pubPEM, 0755); err != nil {
        panic(err)
    }
}
登入後複製

此程式碼產生私鑰檔案.rsa 和公鑰文件key.rsa.pub。這些文件的內容類似於 OpenSSL 命令的輸出。

以上是如何在 Go 中產生 RSA 金鑰對,模仿 OpenSSL 的「genrsa」指令?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板