登录 用户中心() [退出] 后台管理 注册
   
您的位置: 首页 >> SoftHub关联区 >> 主题: golang 生成RSA公钥和私钥文件[zt]     [回主站]     [分站链接]
golang 生成RSA公钥和私钥文件[zt]
clq
浏览(223) - 2018-10-29 19:36:22 发表 编辑

关键字: golang

[2018-10-30 12:45:16 最后更新]


来自 https://studygolang.com/articles/6988
--------------------------------------------------

golang 生成RSA公钥和私钥文件
su_sai · 2016-04-29 20:00:01 · 2697 次点击 · 预计阅读时间 1 分钟 · 21分钟之前 开始浏览   
这是一个创建于 2016-04-29 20:00:01 的文章,其中的信息可能已经有所发展或是发生改变。
package main
import (
"crypto/rand"
"crypto/rsa"
"crypto/x509"
"encoding/pem"
"os"

)

func main() {
//rsa 密钥文件产生
GenRsaKey(1024)
}
//RSA公钥私钥产生
func GenRsaKey(bits int) error {
// 生成私钥文件
privateKey, err := rsa.GenerateKey(rand.Reader, bits)
if err != nil {
return err
}
derStream := x509.MarshalPKCS1PrivateKey(privateKey)
block := &pem.Block{
Type:  "RSA PRIVATE KEY",
Bytes: derStream,
}
file, err := os.Create("private.pem")
if err != nil {
return err
}
err = pem.Encode(file, block)
if err != nil {
return err
}
// 生成公钥文件
publicKey := &privateKey.PublicKey
derPkix, err := x509.MarshalPKIXPublicKey(publicKey)
if err != nil {
return err
}
block = &pem.Block{
Type:  "PUBLIC KEY",
Bytes: derPkix,
}
file, err = os.Create("public.pem")
if err != nil {
return err
}
err = pem.Encode(file, block)
if err != nil {
return err
}
return nil
}

本文来自:CSDN博客

感谢作者:su_sai

查看原文:golang 生成RSA公钥和私钥文件


clq  2018-10-30 12:45:16 发表 编辑

这样生成的证书可以直接用于邮件 dkim 的 dns 记录. 我们最终使用的代码如下:

//生成密钥
func Create_PrivateKey_dkim_email() {
    privateKey, err := rsa.GenerateKey(rand.Reader, 1024); //奇怪,这样生成的在 https://dkimcore.org/c/keycheck 中报不正确
    //算了,以后再找原因吧,可能是 rsa 证书格式的种类问题,先用 https://dkimcore.org/tools/ 生成的好了
    //This is a valid DKIM key record ,不对,好象是可以的
    //privateKey, err := rsa.GenerateKey(rand.Reader, 512);
    if err != nil {
        ////log.Fatal(err)
       
        fmt.Println("1:", err);
    }
    //demo.PriKey = privateKey   
   
    //publicKey := privateKey.PublicKey;
   
    //--------------------------------------------------
    derStream := x509.MarshalPKCS1PrivateKey(privateKey);
    block := &pem.Block{
        Type:  "RSA PRIVATE KEY",
        Bytes: derStream,
    }
    file, err := os.Create("private.pem");
    if err != nil {
        //return err
        fmt.Println("2:", err);
    }
   
    err = pem.Encode(file, block);
    if err != nil {
        //return err
        fmt.Println("3:", err);
    }   
   
    //--------------------------------------------------
    // 生成公钥文件
    publicKey := &privateKey.PublicKey
    derPkix, err := x509.MarshalPKIXPublicKey(publicKey)
    if err != nil {
        //return err
        fmt.Println("4:", err);
    }
    block = &pem.Block{
        Type:  "PUBLIC KEY",
        Bytes: derPkix,
    }
    file, err = os.Create("public.pem")
    if err != nil {
        //return err
        fmt.Println("5:", err);
    }
    err = pem.Encode(file, block)
    if err != nil {
        //return err;
        fmt.Println("6:", err);
    }   
   
}//


总数:1 页次:1/1 首页 尾页  
总数:1 页次:1/1 首页 尾页  


所在合集/目录
邮件SPF专题 更多



发表评论:
文本/html模式切换 插入图片 文本/html模式切换


附件:



NEWBT官方QQ群1: 276678893
可求档连环画,漫画;询问文本处理大师等软件使用技巧;求档softhub软件下载及使用技巧.
但不可"开车",严禁国家敏感话题,不可求档涉及版权的文档软件.
验证问题说明申请入群原因即可.

Copyright © 2005-2020 clq, All Rights Reserved
版权所有
桂ICP备15002303号-1