You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从ED25519公钥PEM提取32字节密钥及生成对应PEM?

ED25519公钥提取与PEM生成问题

背景

我用OpenSSL生成了ED25519密钥对,命令如下:

openssl genpkey -algorithm ed25519 -out private.pem
openssl pkey -in private.pem -pubout -out public.pem

已成功从私钥PEM中提取出32字节ED25519密钥,命令:

openssl asn1parse -in private.pem -offset 14

输出结果:

0:d=0  hl=2 l=  32 prim: OCTET STRING      [HEX DUMP]:1E9D38B5274152A78DFF1A86FA464CEADC1F4238CA2C17060C3C507349424A34

得到的32字节密钥(十六进制编码):

1E9D38B5274152A78DFF1A86FA464CEADC1F4238CA2C17060C3C507349424A34

现需解决两个问题:

  1. 如何从公钥PEM文件public.pem中提取32字节ED25519公钥?
  2. 如何仅通过已知的32字节ED25519公钥生成合法的公钥PEM文件?

一、从公钥PEM提取32字节公钥

ED25519公钥的PEM文件遵循固定ASN.1结构,直接用asn1parse命令提取:

openssl asn1parse -in public.pem -offset 22

这里的offset 22对应公钥数据在ASN.1结构中的起始位置,执行后会输出类似:

0:d=0  hl=2 l=  32 prim: OCTET STRING      [HEX DUMP]<你的公钥十六进制>

提取输出中的十六进制字符串,即为32字节ED25519公钥。

若想直接输出纯十六进制(过滤多余信息),可使用管道组合命令:

openssl asn1parse -in public.pem -offset 22 -out /dev/stdout -noout | xxd -p -c 32

二、从32字节公钥生成PEM文件

ED25519公钥PEM是DER编码的ASN.1结构经过Base64编码并添加头尾注释生成的,可通过以下两种方法生成:

方法1:单命令链实现

假设你持有32字节公钥的十六进制字符串(示例:A1B2C3D4E5F6A7B8C9D0E1F2A3B4C5D6E7F8A9B0C1D2E3F4A5B6C7D8E9F0A1B2),执行:

# 将十六进制转为二进制,再拼接ASN.1前缀并生成PEM
echo -n "A1B2C3D4E5F6A7B8C9D0E1F2A3B4C5D6E7F8A9B0C1D2E3F4A5B6C7D8E9F0A1B2" | xxd -r -p | openssl pkey -pubin -inform der -outform pem -out public_new.pem -in <(echo "302A300506032B6570032100"$(cat /dev/stdin | xxd -p -c 32))

其中302A300506032B6570032100是ED25519公钥的ASN.1 DER固定前缀,用于标识密钥算法和结构。

方法2:分步构造

  1. 拼接完整的DER十六进制:固定前缀302A300506032B6570032100 + 你的32字节公钥十六进制
  2. 将十六进制转为二进制DER文件:
echo -n "302A300506032B6570032100A1B2C3D4E5F6A7B8C9D0E1F2A3B4C5D6E7F8A9B0C1D2E3F4A5B6C7D8E9F0A1B2" | xxd -r -p > pub.der
  1. 将DER文件转为PEM格式:
openssl pkey -pubin -inform der -outform pem -out public_new.pem -in pub.der

验证合法性:执行以下命令查看公钥信息,若输出包含ED25519标识则说明生成成功:

openssl pkey -pubin -in public_new.pem -text -noout

内容的提问来源于stack exchange,提问作者KIAaze

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 14:25:11