如何从字符串中知道哈希算法

how to know hashing algortihm from string

假设我有一个像 A2E8609807F05ADCCF127D9FB376ACCD 这样的字符串,我认为它是一个散列值或加密值。我们如何检查它的哈希类型有什么办法吗?是否有任何网站检查它或有很多哈希值?

谢谢

如果字符串是从安全的加密哈希函数创建的,则无法确定用于对其进行哈希处理的算法。那是因为安全散列函数的输出与随机输出无法区分,因此您实际上根本无法判断它是否是由散列函数生成的。

例如,如果我告诉你其中一个输出是由 SHA-256 产生的,另一个是由 BLAKE2b-256 产生的,除非你能猜出输入(在这种情况下,我有变得简单):

ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad
bddd813c634239723171ef3fee98579b94964e3bb1cb3e427262c8c068d52319

在某些情况下,如果您知道长度,您可以猜出可能使用了什么散列函数。例如,一个 256 位的输入必须来自一个长度为 256 位的散列函数,或者一个更长且被截断的散列函数。但它也可能只是来自 CSPRNG。

如果您的目标是查看哈希值是否是常用函数的常用输入之一,有些网站可以做到这一点。例如,如果是普通输入,this website 将查找 MD5 哈希,但如果是高熵输入,则在计算上无法找到它。另请注意,MD5 不安全,不应使用。