如果有人回答我的问题,我将非常感谢, 我的问题是在sha256中,如果我们有512位消息长度,我该怎么做填充,因为在sha256 l + 1 + k = 448mod512中,它将溢出512位块,我的意思是说,对于哈希计算,我们需要除以512位块变成16 x 32块,过程是消息的位长度(l)+ k的'0'数+ l的二进制表示形式(消息的长度)。我的观点是k个数字0f'0'之后的512位,而l(消息的长度)的位表示将得到512位以上,如何将其划分为16 x 32位块。
答案 0 :(得分:0)
您不需要将数据填充一定的长度即可获得sha256校验和值;该算法将处理几个字节以及兆字节的数据:
Linux> echo 'hey' | sha256sum
4e955fea0268518cbaa500409dfbec88f0ecebad28d84ecbe250baed97dba889 -
Linux> echo '' | sha256sum
01ba4719c80b6fe911b091a7c05124b64eeece964e09c058ef8f9805daca546b -
Linux> ls -oh L0_2018_08_28_Disk1_8mtbno4o_3_1.bkp
-rw-r-----. 1 nfsnobody 348M Aug 28 23:48 L0_2018_08_28_Disk1_8mtbno4o_3_1.bkp
Linux> sha256sum L0_2018_08_28_Disk1_8mtbno4o_3_1.bkp
34438a1bc45f613b7be8797b1139aaa66a60d73844f2d7554184b17c621b4576 L0_2018_08_28_Disk1_8mtbno4o_3_1.bkp
如果您想了解实际的算法,open-source implementation会说
算法规范可以在这里找到: http://csrc.nist.gov/publications/fips/fips180-2/fips180-2withchangenotice.pdf