作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
openssl genrsa -out $1.rsa $2
openssl rsa -in $1.rsa -pubout > $1.rsa.pub
我将两个参数传递给这个小脚本,我怎样才能使用 golang 来做到这一点?我没有得到正确的解析格式。
最佳答案
要生成 RSA key 对并将私钥和公钥写入单独的文件,您需要执行以下操作:
filename
和
bitSize
是你的
$1
和
$2
分别论据。
package main
import (
"crypto/rand"
"crypto/rsa"
"crypto/x509"
"encoding/pem"
"io/ioutil"
)
func main() {
filename := "key"
bitSize := 4096
// Generate RSA key.
key, err := rsa.GenerateKey(rand.Reader, bitSize)
if err != nil {
panic(err)
}
// Extract public component.
pub := key.Public()
// Encode private key to PKCS#1 ASN.1 PEM.
keyPEM := pem.EncodeToMemory(
&pem.Block{
Type: "RSA PRIVATE KEY",
Bytes: x509.MarshalPKCS1PrivateKey(key),
},
)
// Encode public key to PKCS#1 ASN.1 PEM.
pubPEM := pem.EncodeToMemory(
&pem.Block{
Type: "RSA PUBLIC KEY",
Bytes: x509.MarshalPKCS1PublicKey(pub.(*rsa.PublicKey)),
},
)
// Write private key to file.
if err := ioutil.WriteFile(filename+".rsa", keyPEM, 0700); err != nil {
panic(err)
}
// Write public key to file.
if err := ioutil.WriteFile(filename+".rsa.pub", pubPEM, 0755); err != nil {
panic(err)
}
}
这将生成以下两个文件:
-----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 :
-----BEGIN RSA PUBLIC KEY-----
MIICCgKCAgEAsmJ+97V6zCOQdXDd0pivvgoXynKAHaImVdafXDwN+Eb2xKTgzjht
hm144DZzO9/SllCdyLwhXKBQkgim2S5A4iV5w6/yvChqL72+BrItP0+1tAgYvt/C
...
8Xil1cP/5LxIMa1WGHEG1jzrWJkyaVXHS0JOi3FcI4KPQttut2rWpSi3MtAlmuTx
k/AfM3oNnAUlcjYNa+onSs7GgLhd1A5/EiLGMR304uWKno8HrYQfESsCAwEAAQ==
-----END RSA PUBLIC KEY-----
我建议您熟悉链接的功能,它们的文档非常有用。还有其他可用的格式选项(例如:PKCS#8 和 PKIX)以及用于私钥的加密 PEM。
关于go - 使用 golang 以与 openssl genrsa 相同的方式获取 RSA key ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64104586/
我对这个声明的作用感到困惑。 “openssl genrsa -aes256 -out example.key 2048”?我相信它正在创建一个 rsa 私钥,但我不知道它的其余部分在做什么。感谢大家
似乎以下两个命令(来自 LibreSSL 的 openssl)都会生成私钥。它们之间有区别吗?如果不是,为什么有两种生成私钥的方法?谢谢。 openssl genrsa -out key.pem 10
openssl genrsa -out $1.rsa $2 openssl rsa -in $1.rsa -pubout > $1.rsa.pub 我将两个参数传递给这个小脚本,我怎样才能使用 gol
我是一名优秀的程序员,十分优秀!