golang 生成RSA秘钥对

作者: adm 分类: go 发布时间: 2023-12-13

在Go语言中,你可以使用crypto/rsa包生成RSA秘钥对。以下是一个简单的示例代码:

package main
import (
	"crypto/rand"
	"crypto/rsa"
	"crypto/x509"
	"encoding/pem"
	"fmt"
	"os"
)
func main() {
	bitSize := 2048 // RSA位数
	privateKey, err := rsa.GenerateKey(rand.Reader, bitSize)
	if err != nil {
		fmt.Println("无法生成RSA私钥:", err)
		return
	}
	publicKey := &privateKey.PublicKey
	savePrivateKey(privateKey)
	savePublicKey(publicKey)
}
// 保存私钥到文件
func savePrivateKey(key *rsa.PrivateKey) {
	file, err := os.Create("private.pem")
	if err != nil {
		fmt.Println("无法创建私钥文件:", err)
		return
	}
	defer file.Close()
	block := &pem.Block{
		Type:  "PRIVATE KEY",
		Bytes: x509.MarshalPKCS1PrivateKey(key),
	}
	err = pem.Encode(file, block)
	if err != nil {
		fmt.Println("无法编码私钥:", err)
	}
}
// 保存公钥到文件
func savePublicKey(key *rsa.PublicKey) {
	file, err := os.Create("public.pem")
	if err != nil {
		fmt.Println("无法创建公钥文件:", err)
		return
	}
	defer file.Close()
	bytes, err := x509.MarshalPKIXPublicKey(key)
	if err != nil {
        fmt.Println("无法序列化公钥:", err)
        return
    }
	block := &pem.Block{
        Type:  "PUBLIC KEY",
        Bytes: bytes,
    }
    
    err = pem.Encode(file, block)
    if err != nil {
        fmt.Println("无法编码公钥:", err)
    }
}

该代码将生成一个2048位的RSA私钥,并将私钥保存到private.pem文件,公钥保存到public.pem文件。你可以根据实际需求修改代码中的文件名和RSA位数。运行后,你将得到生成的密钥对文件。

如果觉得我的文章对您有用,请随意赞赏。您的支持将鼓励我继续创作!