C++ SHA-256基础实现结果与标准不符,求技术排查
SHA-256实现结果与标准不符,求助排查
我正基于维基百科SHA-2页面的SHA-256伪代码实现该算法,输入为字节粒度,所有数据均存储在栈上(暂不考虑效率)。我为最后一个512比特块的末尾单独创建了填充数组,严格遵循伪代码实现,但结果始终与标准SHA-256不符。对比过其他实现(部分可读性较差)没发现差异,已耗时数小时调试,各模块看似正常但结果仍错误。
环境与测试用例:
- 目标设备为小端架构
- 测试输入:1字节的字符串"G"(十六进制值
0x47)
已尝试的修改与调试步骤:
- 将指针转换替换为
reinterpret_cast - 通过
alignas(8)强制所有数组(包括字节数组)对齐 - 使用
-fno-strict-aliasing编译,无警告但结果未改变 - 移除填充长度写入时的非对齐
uint32_t内存访问,调整数组对齐方式 - 重构代码添加5个可配置参数,测试所有32种参数组合,仍未匹配预期结果
内容的提问来源于stack exchange,提问作者Ilya
相关产品推荐
相关产品推荐

