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

为何Linux下生成的ECDSA签名在Windows系统验证失败?

Linux生成的ECDSA签名文件转移到Windows后验证失败的常见原因

最高发原因:传输模式错误

你用到的文件中,ec.sig是二进制格式,content.txt、ec.key、ec.pubkey是文本格式。如果传输时使用了ASCII模式(比如FTP默认ASCII传输、部分传输工具的自动文本格式转换功能),会自动将Linux下的LF换行符替换为Windows的CRLF换行符,直接导致文件内容被篡改:

  • 若content.txt被修改,其SHA1哈希值会发生变化,签名验证的底层比对直接失败
  • 若二进制的ec.sig被当做文本处理,内部字节会被错误转义,直接造成签名文件损坏

其他可能原因

  • 文件读取错误:Windows默认文件名大小写不敏感,若命令中引用的文件名和实际文件大小写不匹配,Linux下可正常读取,Windows下可能读取到错误文件
  • OpenSSL版本兼容问题:若Windows侧安装的OpenSSL版本与Linux侧差异过大,可能存在secp192k1曲线参数解析、签名格式处理的兼容性bug

排查步骤

  1. 校验所有文件的哈希一致性:在Linux和Windows侧分别执行openssl dgst -sha1 ec.key ec.pubkey ec.sig content.txt,对比两侧输出:
    • 任意文件哈希不一致的,直接使用二进制模式重新传输所有文件,关闭传输工具的自动换行转换、格式优化功能即可解决
  2. 所有文件哈希一致的,执行openssl version对比两侧版本,将Windows侧OpenSSL升级到与Linux侧同版本后重试

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 14:36:01