我正在寻找一种哈希算法,它可以在合理的时间(一天或更短的时间内)使用一台像样的消费计算机将输出反转回输入。如果有人对此有任何了解,我们将不胜感激。
编辑:在阅读了这篇文章中的一些评论和答案之后,我觉得我应该澄清一下:我正在寻找一种哈希算法,在该算法中,将哈希反转到比哈希大一个字节的输入中相对容易。例如,如果哈希输出是32字节,而输入是33字节,我想知道是否有散列算法,在这种情况下可以将输出反转到输入中。
发布于 2019-03-19 12:36:22
根据您想要做的事情,也许您可以使用一个加密散列函数并截断它。将截断的长度调整为您希望预图像计算的工作量。这是创建工作证明机制的有效方法。例如,如果希望要求一方执行2^{m+n}操作,其中2^m是散列非常短的字符串的估计成本,那么:
(盐分长度s需要足够长,以防止预计算可能的输入。)
如果任何密码散列函数都处于良好状态,即使是像MD5这样的大多数性能较差的哈希函数,查找预图像的最快方法也是在所有n-bit字符串中强制搜索。
如果工作证明不是你想要的,那么也许你可以使用一个非加密散列,例如一个启联。通常,不是专门设计为密码散列的散列函数发生意外碰撞的概率很低(但很容易故意创建碰撞),而且很容易反转。
当然,“反转”哈希将找到一个预图像,而不一定是您开始使用的字符串。
https://crypto.stackexchange.com/questions/68111
复制相似问题