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

jsrsasign ECDSA网页示例与OpenSSL工具签名验证失败问题

问题:ECDSA签名OpenSSL验证失败排查

操作流程

  1. 生成EC密钥对
openssl ecparam -genkey -name secp256r1 -out k.pem

执行后得到提示:

"using curve name prime256v1 instead of secp256r1"

  1. 查看密钥详情
openssl ec -in k.pem -noout -text

输出内容:

read EC key
Private-Key: (256 bit)
priv:
    f5:01:5a:53:76:9d:b2:85:05:fc:0f:1f:70:ea:f1:
    a3:ec:59:ef:69:23:74:cf:bf:4d:7f:31:c3:8d:1b:
    96:bb
pub:
    04:e5:8c:01:e7:1a:a7:67:cd:5a:ec:d1:5b:8e:40:
    1b:98:d2:e1:db:92:dc:a0:22:07:4b:ea:17:71:c6:
    b6:f0:3f:81:2d:7e:b4:b4:d1:51:50:82:d6:36:f2:
    81:ec:65:e9:77:e1:12:59:43:25:94:1b:dc:94:48:
    31:a1:bb:86:17
ASN1 OID: prime256v1
NIST CURVE: P-256
  1. 网页生成签名
  • 提取私钥十六进制值(f5015a53769db28505fc0f1f70eaf1a3ec59ef692374cfbf4d7f31c38d1b96bb)填入网页EC私钥栏
  • 提取公钥十六进制值(04e58c01e71aa767cd5aecd15b8e401b98d2e1db92dca022074bea1771c6b6f03f812d7eb4b4d1515082d636f281ec65e977e112594325941bdc944831a1bb8617)填入EC公钥栏
  • 设置消息为aaa,曲线名称选择secp256r1,签名算法选择SHA256with ECDSA
  • 点击签名后得到十六进制签名值:
    3045022035721330a91c3c6d861c7a23815ea22a4eba12c8dc892800b6493364e24ec266022100de0fc18d0eed05e204786732de1c44b2e78cd53ecbf6e110c501d94ebd36f162
    
  1. 准备验证文件
# 将十六进制签名转为二进制文件
printf "3045022035721330a91c3c6d861c7a23815ea22a4eba12c8dc892800b6493364e24ec266022100de0fc18d0eed05e204786732de1c44b2e78cd53ecbf6e110c501d94ebd36f162" | xxd -r -p > web_sign.bin 

# 生成消息文件
echo "aaa" > message.txt

# 导出公钥文件
openssl ec -in k.pem -pubout -out pk.pem
  1. OpenSSL验证签名
openssl dgst -sha256 -verify pk.pem -signature web_sign.bin message.txt

执行后得到结果:

Verification failure

求助

已调试多时仍未定位问题,请求协助排查。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 20:25:26