Golang 示例
更新时间:2022-12-07
package main
import (
"bytes"
"crypto/rand"
"crypto/rsa"
"crypto/sha256"
"crypto/x509"
"encoding/base64"
"encoding/pem"
"fmt"
"io/ioutil"
"os"
"strings"
)
const PRIVATEKEY = "./rsa_privateKey_pem"
const PUBLICEKEY = "./rsa_publicKey_pem"
//生成PEM文件
func GeneratePemFile()error{
privateKey,err := rsa.GenerateKey(rand.Reader,1024*1)
if err != nil{
return err
}
//创建私钥
//privateByte := x509.MarshalPKCS1PrivateKey(privateKey)
privateByte,err := x509.MarshalPKCS8PrivateKey(privateKey)
if err != nil{
return err
}
privateBlock := pem.Block{
Type: "PRIVATE KEY",
Bytes: privateByte,
}
var privateDst *os.File
if privateDst,err = os.Create(PRIVATEKEY);err != nil{
return err
}
if err = pem.Encode(privateDst,&privateBlock);err != nil{
return err
}
//创建公钥
publicByte,err := x509.MarshalPKIXPublicKey(&privateKey.PublicKey)
if err !=nil{
return err
}
publicBlock := pem.Block{
Type: "PUBLIC KEY",
Bytes: publicByte,
}
var publicDst *os.File
if publicDst,err = os.Create(PUBLICEKEY);err != nil{
return err
}
if err = pem.Encode(publicDst,&publicBlock);err != nil{
return err
}
return nil
}