SHA-256输入长度为N×512比特时是否仍需要进行填充操作?
SHA-256 填充规则问题解答
问题1:输入长度为512比特整数倍时是否需要填充
是,必须执行填充操作。哪怕原消息本身刚好是512比特长,也需要填充至1024比特。
SHA-256填充规则强制要求至少追加1比特的填充内容,目的是避免不同原始消息出现相同的填充后结果,从规则层面防范长度扩展等攻击风险。
问题2:剩余空间不足以存放长度比特时的处理方案
当当前块剩余空间小于64比特(SHA-256规定的长度字段占用比特数)时,需要新增一个完整的512比特块存放长度信息,以你提到的504比特输入为例,处理流程如下:
- 原输入末尾先追加1个
1比特,此时累计长度为505比特,当前块剩余可用空间为7比特,无法存放64比特的长度字段 - 将当前块剩余的7比特全部填充
0,完成当前512比特块的构造 - 新增第二个512比特块,前448比特全部填充
0,最后64比特按大端序写入原输入的原始长度(即504) - 最终填充后的总长度为1024比特,符合512比特整数倍的要求
内容的提问来源于stack exchange,提问作者i'm ashamed with what i asked
相关产品推荐
相关产品推荐

