1

我们正在尝试将文本“HELLOWORLDTHISISALARGESTRINGCONTENT”转换为更小的文本。在使用 MD5 哈希进行操作时,我们得到 16 个字节,因为它是一种单向加密,我们无法对其进行解密。有没有其他方法可以将这个大字符串转换为更小的字符串并恢复相同的数据?如果是这样,请告诉我们怎么做

提前致谢。

4

2 回答 2

2

大多数压缩算法无法对这么短的序列做很多事情(或者实际上可能会使它变大)——所以不:你不能做很多事情来神奇地缩小它。您最好的选择可能只是生成一个 guid,并存储针对该 guid 的完整值(在数据库或其他任何地方),然后使用短值作为一次性使用密钥,以查找长值(和然后删除记录)。

于 2013-11-04T07:48:19.290 回答
0

它在很大程度上取决于输入数据。一般来说 - 最坏的情况 - 如果输入数据不够长并且熵很高,则无法通过压缩来减小字符串的大小。

散列是错误的方法,因为散列函数试图将大的输入数据映射到一个短的输入数据,但它(本身)不能保证您找不到第二组数据来映射到相同的字符串。

您可以尝试做的是实施压缩算法或回溯表。压缩可以通过 ziplib 或任何其他压缩库来完成(只需 google 即可)。回溯方法需要第二个位置来存储查找信息。例如,当您获得第一个输入字符串时,将其映射到数字 1 并将信息 1 映射到 {input data} 其他地方。对于每个后续数据集,您添加另一个映射条目。如果输入数据集是有限的,这种方法可以节省空间。

于 2013-11-04T07:48:18.180 回答