GO实现非对称加密--RSA生成公钥私钥
吃瓜围观小分队
post on 2023-1-12 12:13:44
15
0
0
import (
"crypto/rand"
"crypto/rsa"
"crypto/x509"
"encoding/pem"
"flag"
"log"
"os"
)
func main() {
if err := GenerateRSAKey(); err != nil {
log.Fatal("密钥生成失败")
}
log.Println("密钥生成成功")
}
func GenerateRSAKey() error {
//1 RSA生成私钥文件步骤
//--1生成RSA私钥对
var bits int
flag.IntVar(&bits,"key flag",1024,"密钥长度,默认值位1024")
privatekey,err :=rsa.GenerateKey(rand.Reader,bits)
if err != nil {
return err
}
//--2.将私钥对象转换为DER编码形式
derPribateKey := x509.MarshalPKCS1PrivateKey(privatekey)
//--3.创建私钥pem文件
file,err := os.Create("./files/private.pem")
if err != nil {
return err
}
//--4.对私钥信息进行编码,写入到私钥文件中
block := &pem.Block{
Type: "RSA PRIVATE KEY",
Bytes: derPribateKey,
}
err = pem.Encode(file,block)
if err != nil {
return err
}
//2 RSA生成公钥文件的核心步骤
//--1.生成公钥对象
publickey := &privatekey.PublicKey
//--2.将公钥对象转换为DER编码形式
derpublicKey,err := x509.MarshalPKIXPublicKey(publickey)
if err != nil {
return err
}
//--3.创建公钥pem文件
file,err = os.Create("./files/public.pem")
if err != nil {
return err
}
//--4.对公钥信息进行编码,写入公钥文件中
block = &pem.Block{
Type: "PUBLIC KEY",
Bytes: derpublicKey,
}
err = pem.Encode(file,block)
if err != nil {
return err
}
return nil
}
执行后,自动在files目录下生成加密过后的公私钥文件,如下
BitMere.com is Information release platform,just provides information storage space services.
The opinions expressed are solely those of the author,Does not constitute advice, please treat with caution.
The opinions expressed are solely those of the author,Does not constitute advice, please treat with caution.
Write the first review