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

OpenSSL中使用Ed25519签名数据报错的原因及解决方法

问题原因分析

1. openssl dgst命令报错原因

-ed25519不是dgst命令的有效参数。Ed25519是一体化签名算法,其签名流程内置了固定的SHA-512哈希步骤,不需要单独通过dgst指定哈希算法标识。你额外添加的-ed25519参数属于非法选项,因此触发"Unrecognized flag ed25519"错误。

2. openssl pkeyutl命令报错原因

Ed25519不允许自定义哈希算法,它的签名逻辑是固定的。你指定的-pkeyopt digest:ed25519选项完全错误,该参数会导致OpenSSL无法正确初始化签名上下文,从而抛出"Error initializing context"错误。

正确的Ed25519签名命令

前提:确保你的私钥是Ed25519类型的PEM格式(私钥头部应为-----BEGIN PRIVATE KEY-----或-----BEGIN ED25519 PRIVATE KEY-----)。

方法1:使用openssl dgst命令

无需额外哈希参数,OpenSSL会自动识别私钥类型并使用Ed25519算法:

openssl dgst -sign <private_key_file> -out <signature_file> <data_file>

方法2:使用openssl pkeyutl命令

移除错误的-pkeyopt digest:ed25519参数即可:

openssl pkeyutl -sign -inkey <private_key_file> -keyform PEM -in <data_file> -out <signature_file>

方法3:使用openssl ed25519命令(OpenSSL 3.0+专属)

OpenSSL 3.0及以上版本提供了专门的Ed25519命令,签名更直观:

openssl ed25519 -sign <private_key_file> -out <signature_file> <data_file>
签名验证命令(可选)

如果需要验证签名有效性,可使用以下对应命令:

  • 对应dgst签名的验证:
openssl dgst -verify <public_key_file> -signature <signature_file> <data_file>
  • 对应pkeyutl签名的验证:
openssl pkeyutl -verify -inkey <public_key_file> -keyform PEM -in <data_file> -sigfile <signature_file>
  • 对应ed25519命令签名的验证:
openssl ed25519 -verify -pubin -inkey <public_key_file> -signature <signature_file> <data_file>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 00:30:13