2012-06-01 159 views
3

我现在正在使用数十万行字符串。无论如何,我可以压缩字符串像MD5一样,然后解压缩它?压缩字符串,然后解压缩字符串?

+1

不使用像MD5,SHA等哈希函数它需要是一个加密质量函数,或更可能是一个实际的压缩算法。 –

+0

首先,MD5不是压缩,它是散列,这是一种方法,其次MD5是旧的破碎,不使用它。你说你想压缩,而不是加密,所以考虑使用类似GZIP的东西。 –

+0

应该在MD5上使用什么?为什么它坏了? –

回答

10

是可以压缩和解压串在PHP(Demo):

$str = 'Hello I am a very very very very long string'; 
$compressed = gzcompress($str, 9); 
$uncompressed = gzuncompress($compressed); 

echo $str, "\n"; 
echo $uncompressed, "\n"; 
echo base64_encode($compressed), "\n"; 
echo bin2hex($compressed), "\n"; 
echo urlencode($compressed), "\n"; 

但是MD5不压缩,但散列。

看得那么清楚:How to compress/decompress a long query string in PHP?

+0

只是想到提到压缩和解压缩“每个请求”不会导致任何节省,而不是压缩然后工作,然后在稍后解压缩。至少在没有测试的情况下,我怀疑拉链总是最好的方法。 –

+0

当然,这个例子中的字符串没有任何好处,下面是一个更好的例子:http://codepad.viper-7.com/JtvTCk - 只有当压缩的字符串不太长时,才有意义。 – hakre

+0

为了澄清,我的意思是MD5是字符串看起来/如何。我不是故意的意思。但是,谢谢。 – Jake

3

看看提供PHP zlib的功能:http://us.php.net/manual/en/ref.zlib.php

您可以使用gzencode()gzdecode(),组合或gzdeflate()gzinflate()组合或组合gzcompress()gzuncompress()。请记住使用与您使用的压缩函数相匹配的解压函数,因为所有这三对函数都返回(或接受)稍微不同的数据。

您可能需要做一些真实世界的测试来确定哪些对最适合您。祝你好运!

+0

+1中,用于排列存在的对。 – hakre

+0

@hakre谢谢:-) – Jazz