crc32解密短字符串

tca*_*les 4 c# vb.net encryption crc32

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

我需要能够解密散列名称的字符串,如"vacationplans_2010.txt"

长度不到25个字符.

这可能吗?

And*_*rey 8

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

  • downvoters,请在点击前给出你的论点. (4认同)
  • 不要混淆加密哈希函数和哈希函数。“散列函数是任何定义明确的过程或数学函数,它将大量的、可能大小可变的数据转换为一个小的数据,通常是一个可以作为数组索引的单个整数。” - http://en.wikipedia.org/wiki/Hash_function 这正是 crc 所做的 (2认同)

M.A*_*nin 5

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

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

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

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

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

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

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