我正在检索包含文件名而不是内容的 crc32 哈希列表。
我需要能够解密像“vacationplans_2010.txt”这样的散列名称的字符串
长度少于 25 个字符。
这可能吗?
我正在检索包含文件名而不是内容的 crc32 哈希列表。
我需要能够解密像“vacationplans_2010.txt”这样的散列名称的字符串
长度少于 25 个字符。
这可能吗?
它是单向哈希函数。无法解密。
尽管其他用户回答了什么,CRC32 不是加密散列函数;它用于完整性检查(数据校验和)。加密散列函数通常被描述为“单向散列函数”,CRC32 缺少“单向”部分。
话虽如此,您应该考虑以下事项:由于所有可能的 25 个或更少字符的文件名的集合超过 2^32,因此某些文件名必然具有相同的哈希值。因此,对于您获得的某些 CRC32 值,可能会有几个可能的来源(文件名)。您将需要一种确定“真实”来源的方法(我认为人类决策将是最佳选择,因为我们的大脑是一个很好的模式识别设备,但这实际上取决于您的情况)。
可以使用几种方法来部分实现您的要求。蛮力就是其中之一(尽管文件名有 25 个字符长,蛮力可能需要一段时间)。修改字典攻击是另一种选择。其他选项基于对 CRC32 算法的分析,并且需要您深入了解算法的实现细节(否则您将很难理解您正在实现的内容)。例如,请参阅这篇文章或这篇文章。
编辑:Bruce Schneier(Applied Cryptography 的作者,除其他外)的定义:
单向函数相对容易计算,但更难逆向。…… 在这种情况下,“难”被定义为:从 f(x) 计算 x 需要数百万年的时间,即使世界上所有的计算机都被分配到这个问题上。
散列函数是一种函数,无论是数学还是其他,它采用可变长度的输入字符串和(称为原像)并将其转换为固定长度(通常更小)的输出字符串(称为散列值)。
单向哈希函数的安全性在于它的单向性。
像 CRC32 这样的哈希函数计算给定(变量)输入的简单值。计算是不可逆的 - 即您不能可靠地获得仅给定哈希的原始值。
是的,一般的方法是找出你的哈希加密结果如何相同的规则