go - 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
请帮我解决这个问题。
解决方案
推荐阅读
- javascript - 我在 react.js 中收到 400 响应错误我知道后端没问题但客户端我不确定我不熟悉反应
- javascript - 使用 MERN 堆栈从服务器到客户端获取数据的错误
- c# - 在 Azure 中访问大文件
- computer-vision - VGG Image Annotator 无法从 CSV 文件导入注释
- python - 使用 python 将 cv2.calcHist 保存到 CSV 文件中的单个单元格中
- reactjs - 将 React 项目克隆到新 PC 上
- python-3.x - Softmax 没有给出每个类别的概率
- kubernetes - 如何在不传递脚本的情况下使用 Kubernetes 多个命令和参数
- r - tidyverse 中的非 equi 连接
- json - WebAPI:JSON ReferenceHandler.Preserve