使用golang以与openssl genrsa相同的方式获取RSA密钥

使用golang以与openssl genrsa相同的方式获取RSA密钥,go,openssl,rsa,Go,Openssl,Rsa,我将两个参数传递给这个小脚本,如何使用golang实现这一点?解析格式不正确。要生成RSA密钥对并将私钥和公钥写入单独的文件,您需要执行以下操作: 使用生成RSA密钥对 使用 分别使用和将密钥转换为PKCS#1 ASN.1 DER form 使用 写入文件 下面可以看到完整的操作集,其中filename和bitSize分别是$1和$2参数 主程序包 进口( “加密/兰德” “加密/rsa” “加密/x509” “编码/pem” “io/ioutil” ) func main(){ 文件名:=“密

我将两个参数传递给这个小脚本,如何使用golang实现这一点?解析格式不正确。

要生成RSA密钥对并将私钥和公钥写入单独的文件,您需要执行以下操作:

  • 使用生成RSA密钥对
  • 使用
  • 分别使用和将密钥转换为PKCS#1 ASN.1 DER form
  • 使用
  • 写入文件
  • 下面可以看到完整的操作集,其中
    filename
    bitSize
    分别是
    $1
    $2
    参数

    主程序包
    进口(
    “加密/兰德”
    “加密/rsa”
    “加密/x509”
    “编码/pem”
    “io/ioutil”
    )
    func main(){
    文件名:=“密钥”
    比特大小:=4096
    //生成RSA密钥。
    key,err:=rsa.GenerateKey(rand.Reader,bitSize)
    如果错误!=零{
    恐慌(错误)
    }
    //提取公共组件。
    pub:=key.Public()
    //将私钥编码到PKCS#1 ASN.1 PEM。
    keyPEM:=pem.EncodeToMemory(
    &木块{
    键入:“RSA私钥”,
    字节:x509.MarshallPKCS1PrivateKey(键),
    },
    )
    //将公钥编码到PKCS#1 ASN.1 PEM。
    pubPEM:=pem.EncodeTomery(
    &木块{
    键入:“RSA公钥”,
    字节:x509.MarshallPKCS1PublicKey(pub.(*rsa.PublicKey)),
    },
    )
    //将私钥写入文件。
    如果错误:=ioutil.WriteFile(文件名+“.rsa”,keyPEM,0700);错误!=nil{
    恐慌(错误)
    }
    //将公钥写入文件。
    如果错误:=ioutil.WriteFile(文件名+“.rsa.pub”,pubPEM,0755);错误!=nil{
    恐慌(错误)
    }
    }
    
    这将生成以下两个文件:

    密钥.rsa

    openssl genrsa -out $1.rsa $2
    openssl rsa -in $1.rsa -pubout > $1.rsa.pub
    
    -----BEGIN RSA PRIVATE KEY-----
    MIIJJwIBAAKCAgEAsmJ+97V6zCOQdXDd0pivvgoXynKAHaImVdafXDwN+Eb2xKTg
    zjhthm144DZzO9/SllCdyLwhXKBQkgim2S5A4iV5w6/yvChqL72+BrItP0+1tAgY
    vt/CcShDtMdSikW13BN3+SGZSP9yrEsdU2KMK6HSGcSxMpki/XW2BbGkdr3gMtpM
    ...
    S8tZZ/gby/k9nG7Pbw55QM8/Jkyvy/lPP94HrE+MuIiTEd9BG4c7CRNIuE6QoCjp
    1+NIbqEPJTJMfH57cx8R/stLh2nBGcngjmWz+VWhufzhsOr7Wl8Xd6hf13hm4hWG
    y+2pknoTGvw05tiU/eLAbNimtWMOtEdfePzT5NTjV++9kJSr470eyDs2bg==
    -----END RSA PRIVATE KEY-----
    
    key.rsa.pub

    openssl genrsa -out $1.rsa $2
    openssl rsa -in $1.rsa -pubout > $1.rsa.pub
    
    -----BEGIN RSA PRIVATE KEY-----
    MIIJJwIBAAKCAgEAsmJ+97V6zCOQdXDd0pivvgoXynKAHaImVdafXDwN+Eb2xKTg
    zjhthm144DZzO9/SllCdyLwhXKBQkgim2S5A4iV5w6/yvChqL72+BrItP0+1tAgY
    vt/CcShDtMdSikW13BN3+SGZSP9yrEsdU2KMK6HSGcSxMpki/XW2BbGkdr3gMtpM
    ...
    S8tZZ/gby/k9nG7Pbw55QM8/Jkyvy/lPP94HrE+MuIiTEd9BG4c7CRNIuE6QoCjp
    1+NIbqEPJTJMfH57cx8R/stLh2nBGcngjmWz+VWhufzhsOr7Wl8Xd6hf13hm4hWG
    y+2pknoTGvw05tiU/eLAbNimtWMOtEdfePzT5NTjV++9kJSr470eyDs2bg==
    -----END RSA PRIVATE KEY-----
    
    我建议您熟悉链接的函数,它们的文档非常有用。还有其他可用的格式选项(例如:PKCS#8和PKIX)以及私钥的加密PEM