ZBLOG

golang 生成RSA秘钥对

在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位数。运行后,你将得到生成的密钥对文件。


内容由零声教学AI助手提供,问题来源于学员提问

本站部分文章来源于网络,版权归原作者所有,如有侵权请联系站长删除。
转载请注明出处:https://golang.0voice.com/?id=10039

分享:
扫描分享到社交APP
上一篇
下一篇
发表列表
游客 游客
此处应有掌声~
评论列表

还没有评论,快来说点什么吧~

联系我们

在线咨询: 点击这里给我发消息

微信号:3007537140

上班时间: 10:30-22:30

关注我们
x

注册

已经有帐号?