【发布时间】:2022-01-25 12:46:45
【问题描述】:
假设我有一个像 A2E8609807F05ADCCF127D9FB376ACCD 这样的字符串,我认为它是一个散列值或加密值。我们如何检查它的哈希类型有什么办法吗?是否有任何网站对其进行检查或具有大量哈希值?
谢谢
【问题讨论】:
标签: hash cryptography
假设我有一个像 A2E8609807F05ADCCF127D9FB376ACCD 这样的字符串,我认为它是一个散列值或加密值。我们如何检查它的哈希类型有什么办法吗?是否有任何网站对其进行检查或具有大量哈希值?
谢谢
【问题讨论】:
标签: hash cryptography
如果字符串是从安全加密散列函数创建的,则无法确定用于散列它的算法。那是因为安全散列函数的输出与随机无法区分,所以你根本无法判断它是否是由散列函数产生的。
例如,如果我告诉您其中一个输出是由 SHA-256 产生的,另一个是由 BLAKE2b-256 产生的,那么除非您能猜出输入(在这种情况下,我已经简化了):
ba7816bf8f01cfea414140de5dae2223b00361a396177a9cb410ff61f20015ad
bddd813c634239723171ef3fee98579b94964e3bb1cb3e427262c8c068d52319
如果您知道长度,您可以在某些情况下猜测可能使用了哪个哈希函数。例如,256 位输入必须来自长度为 256 位的散列函数,或者更长且被截断的散列函数。但它也可能只是来自 CSPRNG。
如果您的目标是查看哈希值是否是常用函数的常用输入之一,那么有些网站会这样做。例如,this website 将查找一个 MD5 哈希,如果它是一个公共输入,但如果它是一个高熵输入,它在计算上是不可行的。另请注意,MD5 不安全,不应使用。
【讨论】: