首页 > 解决方案 > Golang rsa x509 ParsePKIXPublicKey 错误

问题描述

我在解析刚刚创建的 rsa 密钥时遇到了一些奇怪的情况。

在这一部分中,我生成新的对并写入文件:

rsaKey,err:= rsa.GenerateKey(rand.Reader,2048)

if err != nil {
    fmt.Println(err)
    os.Exit(1)
}

publicKey := rsaKey.PublicKey

outFile, err := os.Create("./private.pem")
defer outFile.Close()

var privateKey = &pem.Block{
    Type:  "PRIVATE KEY",
    Bytes: x509.MarshalPKCS1PrivateKey(rsaKey),
}

err = pem.Encode(outFile, privateKey)


asn1Bytes, err := asn1.Marshal(publicKey)

var pemkey = &pem.Block{
    Type:  "PUBLIC KEY",
    Bytes: asn1Bytes,
}

pemfile, err := os.Create("./public.pem")
defer pemfile.Close()

err = pem.Encode(pemfile, pemkey)

下一步是从文件中读取密钥并解析它:

data, err := ioutil.ReadFile("./public.pem")

block, _ :=pem.Decode(data)
res,err := x509.ParsePKIXPublicKey(block.Bytes)
fmt.Print(err)

但是x509.ParsePKIXPublicKey(block.Bytes)返回错误:

asn1: 结构错误: 标签不匹配 (16 vs {class:0 tag:2 length:257 isCompound:false}) {optional:false explicit:false application:false defaultValue: tag: stringType:0 timeType:0 set: false omitEmpty:false} 算法标识符@4

游乐场示例

https://play.golang.org/p/djlK8lO5_E2

请帮我解决这个问题。

标签: gorsax509

解决方案


推荐阅读