>백엔드 개발 >Golang >OpenSSL의 `genrsa` 명령을 모방하여 Go에서 어떻게 RSA 키 쌍을 생성할 수 있습니까?

OpenSSL의 `genrsa` 명령을 모방하여 Go에서 어떻게 RSA 키 쌍을 생성할 수 있습니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-15 22:08:16765검색

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 키 쌍을 생성하고 개인 키용으로 $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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.