如果输入以固定值开始,是否可以优化/预先计算SHA-256中的某些结果?我的输入总是1111||message。我可以在SHA-256中预先计算1111以节省一些周期吗?
发布于 2021-02-15 19:34:21
但是,不能完全预先计算1111,但是可以完全预先计算长度倍数为512的消息。原因很简单,SHA-256每次压缩使用512位消息块,即SHA-256的压缩功能使用512位消息输入和256位先前的哈希值。
和
H_i= C(H_{i-1},m_i)中,每个m_i都有512个位长,H_0是IV.
每条评论下面
老实说,我的输入是32字节的1,x,32-Byte X,32-Byte Y,我要用
X预先计算什么不是常数?
32-字节产生256位,因此你不能完全预先计算一个压缩.然而,您仍然可以预先计算一些轮的压缩函数,它可以帮助;
SHA-256使用64轮分组密码,每轮使用消息作为密钥,您可以计算下一次压缩调用的8轮。所述圆W_i的键i由所述块的消息词M_t形成;
使用32字节,您只能预计算8轮压缩函数.Y没有这样的选项,因为在开始循环时,需要前面压缩函数中的前一个散列值。
有一种方法,虽然并不有效,但可以计算H'=C(H_0,11..11)。这需要填充物。现在可以使用此H'作为\operatorname{SHA256'}的IV;即
在H_i= C(H_{i-1},m_i)中,每个m_i都有512位长,而H_0是H',那么您的真正消息将变成
https://crypto.stackexchange.com/questions/88257
复制相似问题