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

从Botan 2.7.0迁移至3.8.1:EMSA1(SHA-256)兼容问题咨询

问题解答

1. Botan 3.8.1中兼容EMSA1(SHA-256)的签名方式

Botan 3.x版本里,原EMSA1签名方案被更名为Raw,二者语义完全一致:直接对哈希结果进行签名(无额外编码填充)。你需要将算法名称替换为Raw(SHA-256)——注意不能直接写SHA-256,因为PK_Signer需要的是签名方案,而非单纯的哈希算法本身。

修改后的代码示例:

auto ALGORITHM = "Raw(SHA-256)";  
auto privateKey  = loadPrivateKey(privateKeyFile);
std::vector<uint8_t> data(contents.begin(), contents.end());
Botan::AutoSeeded_RNG rng;
Botan::PK_Signer signer(*privateKey, rng, ALGORITHM);
signer.update(data);
std::vector<uint8_t> signature = signer.signature(rng);

2. 解决"Could not find any algorithm named 'SHA-256'"报错

你的配置存在两处问题:

  • 缺少Raw签名方案对应的模块:必须添加pk_pad_raw模块,否则Botan无法识别Raw(SHA-256)签名方案。
  • SHA-256对应的核心模块是sha2,而非sha2_64(sha2_64仅为64位平台的特定优化模块,完整的SHA-2系列哈希算法由sha2模块提供)。

修正后的配置命令:

python ./configure.py --cc=gcc --cpu=x86_64 --os=mingw --minimized-build --amalgamation --enable-modules=rsa,auto_rng,sha2,pk_pad_raw,sha3,hmac

3. 服务器是否需要同步更新算法

不需要。Raw(SHA-256)与原EMSA1(SHA-256)的签名逻辑完全一致:都是对SHA-256哈希值直接进行签名(无填充)。只要服务器端仍使用Botan 2.7.0的EMSA1(SHA-256)进行验证,就能正常校验客户端用Raw(SHA-256)生成的签名,无需同步升级。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.12 16:57:16