Hash 是否有任何字符串可以是哈希函数的结果?

Hash 是否有任何字符串可以是哈希函数的结果?,hash,sha256,Hash,Sha256,我有一个有趣的问题要问你 允许拾取任何字符串,例如256位字符串。现在让我们假设这个字符串应该是散列函数(SHA-256)的结果。我是否总能找到作为此哈希源的无限消息? 我知道,如果我选择一条消息并对其进行哈希,那么这个哈希就是无限多条消息的哈希。但是有没有可能存在一个不能作为哈希函数结果的字符串(256位或其他位长) 让我们也假设,我有绝对的蛮力,我在这方面的能力是无穷的 SHA-256可以生成256位的所有组合作为其输出,因此任何256位字符串都可以是某个内容的SHA-256哈希。但你说的“

我有一个有趣的问题要问你

允许拾取任何字符串,例如256位字符串。现在让我们假设这个字符串应该是散列函数(SHA-256)的结果。我是否总能找到作为此哈希源的无限消息?

我知道,如果我选择一条消息并对其进行哈希,那么这个哈希就是无限多条消息的哈希。但是有没有可能存在一个不能作为哈希函数结果的字符串(256位或其他位长)


让我们也假设,我有绝对的蛮力,我在这方面的能力是无穷的

SHA-256可以生成256位的所有组合作为其输出,因此任何256位字符串都可以是某个内容的SHA-256哈希。但你说的“我总能找到它的源头”是什么意思?是否要在散列之前获取原始字符串?这是不可行的,因为散列是一个单向函数。好吧,我的意思是“我总能找到无限的消息作为散列的来源吗?”。是的,我不是在寻找原始字符串,我在寻找任何可能导致该散列的字符串;)@不,你的第一句话有没有一个来源,所有的可能性都产生了?这是有道理的,但我还没有在各种文档中找到它。@Windkiller理论上你可以。实际上,这需要一次暴力搜索,可能需要几十亿年的时间(或者至少比可行的时间长得多——至少应该是加密安全的)@windkiller我相信这需要大量的数学证明,这并不简单。然而,SHA-256规范表示,它打算找到一个计算给定哈希值的值来执行2^n操作,并找到一个冲突来执行2^n/2,如果没有使用所有2^n值,它就无法给出这一承诺。