使用golang以与openssl genrsa相同的方式获取RSA密钥
我将两个参数传递给这个小脚本,如何使用golang实现这一点?解析格式不正确。要生成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(){ 文件名:=“密
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