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

基于2^26基数优化Poly1305在ARM Cortex-M4上的实现故障排查

关于ARM Cortex-M4上Poly1305算法2^26基数实现的问题

实现背景与问题

我正在ARM Cortex-M4微控制器上实现Poly1305算法,初始采用28基数表示,后修改为226基数并保留原有实现逻辑,但修改后生成的认证标签不符合预期,测试用例失败。

实现思路

  • 累加器h以5个26位整数存储
  • 加法和乘法后进行进位传播,确保值在26位范围内
  • 乘法步骤mulmod()遵循标准模2^130−5约简规则
  • 最终步骤freeze()确保值处于正确范围

问题现象

函数可正常执行,但生成的Poly1305认证标签与预期不符。我怀疑问题出在进位传播、模约简或密钥解析环节,但尚未定位具体原因,已检查位运算、进位处理和约简逻辑仍未解决。

怀疑方向

  1. 进位传播:squeeze()函数可能存在未覆盖的边界情况
  2. 乘法步骤mulmod():部分乘积和进位处理可能有误
  3. 最终步骤freeze():模2^130−5的条件减法逻辑可能异常
  4. 密钥解析:从密钥提取r并掩码的方式可能存在问题

调试尝试

  • 打印h和r的中间值,与预期结果不符
  • 怀疑问题出在mulmod()、freeze()或密钥最终加法环节
  • 与参考实现对比,结果存在差异

问题咨询

  1. 我的进位处理是否存在错误?
  2. squeeze()或freeze()中的模约简逻辑是否有误?
  3. 在ARM Cortex-M4上实现Poly1305有哪些已知陷阱?

恳请提供问题定位或进一步调试的指导!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 16:32:45