是否可以从一系列中间值生成最终的SHA-256值?

时间:2015-07-30 08:00:16

标签: javascript c#

是否有可能产生多个中间SHA-256值,这些值可以在以后以某种方式组合以产生从单个散列计算产生的相同SHA-256?

换句话说,如果我有一天哈希一个4GB .ISO图像文件获取SHA-256值,我可以通过将文件分成几个来生成相同的单个SHA-256,比如10个部分,产生一个中间SHA-每个部分256个,然后在以后使用"仅生成最终的SHA-256"中间SHA-256值?

我意识到可能无法从1个最终的SHA-256值生成10个中间SHA-256值,但我认为可以以块的形式散列文件并在以后合并这10个中间SHA-256值时间不需要同时的实际数据。

如果可以,我如何从C#和/或JavaScript中的中间SHA-256值生成最终的SHA-256?

编辑:我想取消中间值为SHA-256值的要求。

我不在乎它们是什么,只要我能够在以后生成最终的SHA-256使用"只有"多个中间值,没有数据。并且它是完全相同的SHA-256,我将在4GB(任意大小)文件上同时完成所有操作。

我想到了一个像代金券系统这样的东西,指挥员要求看到你的火车票,你有一个人在你的位置站起来说,"我已经检查了这个人出去,你不需要,我会验证他的诚信和#34;。

1 个答案:

答案 0 :(得分:0)

散列算法为每个输入数据生成唯一的散列。中间散列的任何组合仍然与您的ISO文件不同,因此产生的散列与您直接散列文件的散列不同。

如果你放弃了从文件生成的哈希必须与从中间体产生的最终哈希相同的要求,你仍然可以在我看来使用后面的方法,因为10个哈希的组合应该仍然是唯一的本身,为每个输入文件提供唯一的最终哈希值。

该计划看起来像这样:

enter image description here