什么是单个“1”位的SHA-256哈希?

时间:2010-12-12 17:40:47

标签: algorithm language-agnostic hash sha

SHA-256的定义似乎是由单个“1”位组成的输入具有明确定义的散列值,不同于“01”字节的散列值(因为填充是根据输入的位长度完成的。

然而,由于字节序问题以及我无法找到支持单个位的实现这一事实,我无法弄清楚这个正确的值是什么。

那么,由<1>位组成的 1位长输入的正确散列是什么? (不是8位长字节[] {1}输入。)

3 个答案:

答案 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)

section 8RFC 4634中有可用的C代码来计算不一定是8位倍数的数据散列。请参阅名称为SHA*FinalBits(...)的方法。

相关问题