crc32解密短字符串

我正在检索包含文件名称的crc32哈希列表,而不是内容。

我需要能够解密像“vacationplans_2010.txt”这样的哈希名称的字符串

长度不到25个字符。

这可能吗?

它是单向散列函数。 它无法解密。

尽管其他用户回答, CRC32不是加密哈希函数 ; 它用于完整性检查(数据校验和)。 加密哈希函数通常被描述为“单向哈希函数”,CRC32缺少“单向”部分。

话虽如此,您应该考虑以下因素:由于所有可能的25个字符或更少的文件名的集合大于2 ^ 32,因此某些文件名必须具有相同的散列值。 因此,对于您获得的某些CRC32值,可能会有几个可能的源(文件名)。 你需要一种方法来确定“真正的”来源(我认为人类决定是最好的选择,因为我们的大脑是一个伟大的模式识别设备,但它实际上取决于你的情况)。

可以使用几种方法来部分实现您的要求。 蛮力就是其中之一(虽然文件名长25个字符,暴力可能需要一段时间)。 修改后的字典攻击是另一种选择。 其他选项基于对CRC32算法的分析,并且需要您深入研究算法的实现细节(否则您将很难理解您正在实现的内容)。 例如,请参阅此文章或本文。

编辑:Bruce Schneier的定义(Applied Cryptography的作者,以及其他内容):

单向函数相对容易计算,但很难反转。 …… 在这种情况下,“硬”被定义为:从f(x)计算x需要数百万年,即使世界上所有计算机都分配给了问题。

散列函数是一个函数,数学或其他函数,它采用可变长度的输入字符串和(称为预映像)并将其转换为固定长度(通常较小)的输出字符串(称为散列值)。

单向散列函数的安全性是它的单向性。

像CRC32这样的散列函数计算给定(可变)输入的简单值。 计算是不可逆的 – 即,您不能可靠地获得仅给出哈希值的原始值。