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

