使用C#像反向md5将较大的字符串加密为较小的字符串

时间:2013-11-04 07:39:37

标签: c# string encryption md5

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

提前致谢。

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

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

哈希是一种错误的方法,因为哈希函数试图将大输入数据映射到一个短数据,但它不能保证(单独)你找不到第二组数据来映射到同一个字符串

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