从文件加载加密的PKCS1私钥

时间:2017-06-21 10:34:47

标签: go rsa private-key pkcs#11

我在文件中有一个PKCS1私钥,我使用

加载它
b, err := ioutil.ReadFile(path)
if err != nil {
    return nil, err
}

然后,我尝试将其转换为私钥对象

block, _ := pem.Decode(b)
der, err := x509.DecryptPEMBlock(block, []byte("qwerty"))
if err != nil {
    return nil, err
}

bytes := pem.EncodeToMemory(&pem.Block{Type: "RSA PRIVATE KEY", Bytes: der})

return x509.ParsePKCS1PrivateKey(bytes)

但是这段代码会在DecryptPEMBlock

中抛出异常
x509: no DEK-Info header in block

我在golang

中找不到任何关于此的文档

2 个答案:

答案 0 :(得分:1)

我的私钥文件出错,这是一个正常工作的代码

func GetPrivateKey(path string) (*rsa.PrivateKey, error) {
    b, err := ioutil.ReadFile(path)
    if err != nil {
        return nil, err
    }

    block, _ := pem.Decode(b)
    der, err := x509.DecryptPEMBlock(block, []byte(*PrivateKeyPassword))
    if err != nil {
        return nil, err
    }

    return x509.ParsePKCS1PrivateKey(der)
}

P.S。 Go确实有一个解密PKCS1私钥的包,但没有PKCS8。

答案 1 :(得分:0)

Go似乎没有包解码PKCS文件

查看此链接以获取更多详细信息PKCS

我无法找到解码PKCS1密钥的软件包

使用此软件包解码PKCS8文件,有一些软件包可以解码PKCS8,PKCS10,PKCS12但不能解码PKCS1