已知CRC哈希的Polynomial Formula,能否通过反向运算还原原始文本?
结论:无法通过CRC多项式反向还原原始文本
不行,哪怕你知道CRC的多项式公式,也没法从CRC哈希值还原出原始文本。
原因很简单:CRC属于单向哈希算法,它的设计逻辑是把任意长度的输入文本,通过多项式运算映射成固定长度的哈希值。这个过程是「多对一」的——无数不同的原始文本,最终都会生成同一个CRC哈希值。你根本没法从一个哈希值反向推导出唯一的原始文本,因为这个哈希值对应的原始文本本来就不唯一。
适合你的替代方案
既然你的核心需求是「缩短长文本+可还原」,完全不用纠结哈希算法,推荐两个简单可行的方向:
- 压缩+编码:先用通用压缩算法(比如DEFLATE)把文本压缩成二进制数据,再转成Base64这类文本格式编码。压缩能大幅缩短长文本的体积,Base64则让压缩后的内容可以像普通文本一样传输/存储,需要还原时反向解码再解压即可。
- 短ID映射:搭建一个简单的存储系统(比如数据库甚至本地文件),把原始长文本存起来,给它分配一个简短的唯一ID(比如随机字符串、自增数字)。用这个短ID代替原文本传输/展示,需要还原时,用短ID去存储系统里查询对应的原始文本就行。
这两个方案都完全满足你的需求,而且实现起来比折腾CRC反向运算简单得多。
内容的提问来源于stack exchange,提问作者coreto98
相关产品推荐
相关产品推荐

