我想要验证一个字符串是否是另一个字符串的sha256表示,而无需解密它。这是否可能?
是和不是。
你可以很容易地测试一个字符串是否为十六进制。然后,你可以测试它是否包含一个在统计意义上合理的数字和字母数量。这将排除一些常见的非sha256字符串。
但是,如果有人创建了一个旨在看起来像sha256的随机字符串,我认为通过任何数学测试都无法将其与真正的sha256区分开来。该算法被设计为对此具有强健性。
String
或byte[]
。String
是否是哈希值,那么任何32字节的数字都是无限未知明文的哈希值。但这就像问"我怎样知道一个32字节的数字是数字?",你会发现这个问题没有头绪。2^(32*8)
个SHA256值,但总的来说,你的问题没有一个确定的答案,因为它取决于所涉及的哈希函数。假设有无限数量的任意长度的明文,则哈希函数的值域可以完整覆盖,前提是该函数本身适合。但证明这一点是另外一回事。 - Jack