我试图获得一个电路来计算大于512位的输入消息的SHA256散列。
我理解消息是如何填充的(我们添加了一个1和一些零,然后最后的64位包含原始消息的长度等等)。
做完填充物后,我有两个512位块.
我想使用这里提供的电路(用于压缩功能):
https://www.cs.bris.ac.uk/Research/CryptographySecurity/MPC/
电路的前512条是输入,最后256条是输出。我想我知道如何使用第一个街区的电路。我可以简单地将我的第一个512位块输入到电路的前512根线中。
但我不知道如何进行第二个街区。特别是,我需要更新h0、h1、.、h7值,但不知道如何更新,因为我无法确定与它们对应的电线在电路中的位置。
任何帮助都将不胜感激。
发布于 2017-12-07 20:37:28
一个人不能完全按照给定的方式使用电路。
要构建两个块SHA-256,第二轮必须输入第二512位(填充)块和第一轮256位输出。最后的散列是第二轮的256位输出.
对于第一轮,在给定的电路中,唯一可变的输入是512位第一块;其他256个输入位总是被设置为由SHA-256定义的常数,等于0x6a09e667bb67ae853c6ef372a54ff53a510e527f9b05688c1f83d9ab5be0cd19,,因此这256个输入位在给定的方程中丢失。
我猜您必须重写(或从另一个源)定义SHA-256循环的方程,然后检查当上一轮256位输入设置为正确的常数时,您的工作等效于给定的方程。
https://crypto.stackexchange.com/questions/53772
复制相似问题