如何在golang中使用密码创建rsa私钥?在golang,我是新的。我阅读了加密包的文档。找不到答案。 谢谢!
答案 0 :(得分:11)
第一步,生成私钥。 第二步,将其转换为PEM格式。第三步,加密PEM。
所有这一切都可以使用Golang的标准库完成,这是非常完整的。代码没什么难度所以我把它放在这里。所有这一切都是为了知道要使用哪些功能。
import (
"crypto/rand"
"crypto/rsa"
"crypto/x509"
"encoding/pem"
)
func PrivateKeyToEncryptedPEM(bits int, pwd string) ([]byte, error) {
// Generate the key of length bits
key, err := rsa.GenerateKey(rand.Reader, bits)
if err != nil {
return nil, err
}
// Convert it to pem
block := &pem.Block{
Type: "RSA PRIVATE KEY",
Bytes: x509.MarshalPKCS1PrivateKey(key),
}
// Encrypt the pem
if pwd != "" {
block, err = x509.EncryptPEMBlock(rand.Reader, block.Type, block.Bytes, []byte(pwd), x509.PEMCipherAES256)
if err != nil {
return nil, err
}
}
return pem.EncodeToMemory(block), nil
}