SHA-256的定义似乎是由单个“1”位组成的输入具有明确定义的散列值,不同于“01”字节的散列值(因为填充是根据输入的位长度完成的。
然而,由于字节序问题以及我无法找到支持单个位的实现这一事实,我无法弄清楚这个正确的值是什么。
那么,由<1>位组成的 1位长输入的正确散列是什么? (不是8位长字节[] {1}输入。)
答案 0 :(得分:10)
好的,根据我自己的实现:
1位字符串“1”:
B9DEBF7D 52F36E64 68A54817 C1FA0711 66C3A63D 384850E1 575B42F7 02DC5AA1
1位字符串“0”:
BD4F9E98 BEB68C6E AD3243B1 B4C7FED7 5FA4FEAA B1F84795 CBD8A986 76A2A375
我已经在几个标准的8位多输入输入上测试了这个实现,包括0位字符串,结果是正确的。
(当然这个问题的关键在于首先验证上述输出,所以要小心使用......)
答案 1 :(得分:3)
不确定我是否理解你的问题。
SHA-256的块大小为64字节(= 512位)。这意味着必须首先填充较小的输入。填充的结果如下所示:
For Bit 1: 1100000000000...00000000001
For Bits 01: 0110000000000...00000000010
由于此结果不同,以下压缩函数的结果也是如此。因此哈希值是。标准文档解释了填充描述性:http://csrc.nist.gov/publications/fips/fips180-2/fips180-2.pdf
答案 2 :(得分:2)