如何在golang中使用passphrase创建rsa私钥

时间:2016-05-19 07:16:05

标签: go cryptography rsa

如何在golang中使用密码创建rsa私钥?在golang,我是新的。我阅读了加密包的文档。找不到答案。 谢谢!

1 个答案:

答案 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
}
相关问题