java - 有没有办法确认字符串是 sha256 哈希?

java - is there a way to confirm that a string is a sha256 hash?

我想验证一个字符串是另一个字符串的 sha256 表示,而无需解密它。这可能吗?

我想你可以做的是散列另一个字符串,然后将这两个字符串相互比较。
不知道这是否对您有帮助,但我读到它是创建彩虹表以破解密码尝试时常用的做法。
编辑:哦,忘了这也是在 php 登录网页 iirc 时比较密码的方法。
至少我在大学里必须这样做。

是也不是。

您可以很容易地测试一个字符串是否为十六进制。然后,您可以测试它是否包含统计上合理数量的数字和字母。这将排除一些常见的非 sha256 字符串。

但是,如果有人创建了一个看起来像 sha256 的随机字符串,我认为通过任何数学测试都不可能将它与真实的字符串区分开来。该算法旨在对此具有鲁棒性。

sha-256 值只是一个 256 位(32 字节)的值,您通常将其表示为 String 或 Java 中的 byte[]

作为一个值本身是没有意义的,如果你想知道一个特定的 String 是否是一个散列那么任何 32 字节的数字都是一个无限未知纯文本的散列。但这就像问"how do I know that a 32 bytes number is a number?",你看到你无处可去。

它只有在与纯文本配对时才有用,这样您就可以将它与从纯文本计算出的哈希值进行比较,以验证它们是否匹配。