ホームページ >バックエンド開発 >Golang >OpenSSL の「genrsa」コマンドを模倣して、Go で RSA キー ペアを生成するにはどうすればよいですか?

OpenSSL の「genrsa」コマンドを模倣して、Go で RSA キー ペアを生成するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-15 22:08:16762ブラウズ

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

Go による RSA キーの生成: Openssl genrsa の複製

OpenSSL コマンド openssl genrsa -out $1.rsa $2 は RSA キー ペアを生成し、これらを 2 つの別個のファイル (秘密キーの $1.rsa と、公開キーの $1.rsa.pub。 Go では、このプロセスには以下が含まれます:

  • RSA キー ペアの生成
  • 公開キーの抽出
  • キーを PKCS#1 ASN.1 DER 形式に変換
  • PEM ブロックへのエンコード
  • キーの書き込みファイルへ

次のコードは、このプロセスを示しています。

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)
    }
}

このコードは、秘密鍵ファイル key.rsa と公開鍵ファイル key.rsa.pub を生成します。これらのファイルの内容は、OpenSSL コマンドの出力に似ています。

以上がOpenSSL の「genrsa」コマンドを模倣して、Go で RSA キー ペアを生成するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。