Go RSA公钥私有生成简单示例
本文提供一个简单的RSA公钥私有生成示例。非对称加密算法有很多, 平常的应用开发中RSA使用较多,因此本文简单提供一个RSA密码生成的示例。备注:生成的公钥私有是经过base64后输出到文件的。 使用需要base64 decode然后再加解密。package mainimport ("crypto/rand""crypto/rsa""crypto/x509""encoding/pem""flag"
·
本文提供一个简单的RSA公钥私有生成示例。
非对称加密算法有很多, 平常的应用开发中RSA使用较多,因此本文简单提供一个RSA密码生成的示例。
备注:生成的公钥私有是经过base64后输出到文件的。 使用需要base64 decode然后再加解密。
package main
import (
"crypto/rand"
"crypto/rsa"
"crypto/x509"
"encoding/pem"
"flag"
"k8s.io/klog"
"os"
)
/**
生成rsa证书的demo
*/
func main() {
var keyLength int
flag.IntVar(&keyLength, "l", 2048, "key length, default value 2048")
if err := GenRsaKey(keyLength); err != nil {
klog.Fatal("")
}
klog.Info("done")
}
func GenRsaKey(bits int) error {
privateKey, err := rsa.GenerateKey(rand.Reader, bits)
if err != nil {
klog.Warning("failed to gen key")
return err
}
derStream := x509.MarshalPKCS1PrivateKey(privateKey)
block := &pem.Block{
Type: "privateKey",
Bytes: derStream,
}
file, err := os.Create("privateKey.pem")
if err != nil {
klog.Warning("failed to create private key file")
return err
}
err = pem.Encode(file, block)
if err != nil {
klog.Warning("failed to write private key to file")
return err
}
file.Close()
publicKey := &privateKey.PublicKey
derPublicStream := x509.MarshalPKCS1PublicKey(publicKey)
block = &pem.Block{
Type: "publicKey",
Bytes: derPublicStream,
}
file, err = os.Create("publicKey.pem")
if err != nil {
klog.Warning("failed to create public key file")
return err
}
// 输出为pem,其实本质就是加上文集注释说明,外加将byte base64后输出到文件
// 如果在实际应用中,rsa信息privatekey publickey可以存储到数据库,直接将byte base64后存储
err = pem.Encode(file, block)
if err != nil {
klog.Warning("failed to write public key to file")
return err
}
file.Close()
return nil
}
运行截图
更多推荐
已为社区贡献9条内容
所有评论(0)