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