2012-06-01 190 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