是否可以只计算一部分 SHA512 哈希值? (C#)

Is it possible to calculate only a part of SHA512 hash? (C#)

我正在尝试解决一个 keygenme 任务。我发现有一个 ulong 值存储为 string。哈希是使用 SHA512Managed 计算的,128 字节结果中只有 16 字节很重要。我需要找到这样一个存储为 stringulong 值,它给出具有 16 个特定字节的散列。 据我了解,SHA 算法无法逆转,因此唯一可能的解决方案是蛮力方法。有 18,446,744,073,709,551,616 个可能的 ulong 值,这是相当多的。 所以,问题是"is it possible to calculate only 16 bytes oh hash in order to decrease calculation time?"。 P.S。如果您知道解决我的任务的另一种方法,请告诉我。谢谢!

不,不是。该算法会旋转值,因此您在计算时不能遗漏任何部分。

理论上你可以在最后一轮中留下一小部分,但这对暴力破解所花费的时间没有任何实际意义。