2012-06-01 2 views
3

저는 지금 수십만 줄의 문자열로 작업하고 있습니다. 어쨌든 MD5와 같은 문자열을 압축 한 다음 압축을 풀 수 있습니까? PHP (Demo)에서문자열을 압축 한 다음 문자열을 압축 해제 하시겠습니까?

+1

MD5, SHA 등과 같은 해시 함수를 사용하지 마십시오. 암호화 수준의 함수 또는 실제 압축 알고리즘이 필요합니다. –

+0

첫째, MD5는 압축이 아닙니다. 해시입니다. 단 한 가지 방법 일뿐입니다. 둘째, MD5는 오래되어 손상되었으므로 사용하지 마십시오. 암호화가 아닌 압축이 필요하다고 말하면 GZIP 같은 것을 사용하는 것이 좋습니다. –

+0

MD5에서 대신 사용해야하는 것은 무엇입니까? 왜 부러 졌습니까? –

답변

10

예를 압축 및 압축 해제 할 수 있습니다 문자열 :

$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는 압축하지만 해싱되지 않습니다.

도 참조 : 당신은 gzencode()gzdecode()의 조합 또는 gzdeflate()gzinflate()의 조합, 또는 이들의 조합을 사용할 수 있습니다 http://us.php.net/manual/en/ref.zlib.php

: 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 기능을 살펴보십시오 gzcompress()gzuncompress()입니다. 이 세 쌍의 함수 모두가 약간 다른 데이터를 반환 (또는 받아들이 기)하므로 사용했던 압축 함수와 일치하는 압축 해제 함수를 사용해야합니다.

이러한 쌍 중 어떤 것이 가장 적합한 지 판단하기 위해 실제 테스트를 수행해야 할 수 있습니다. 행운을 빕니다!

+0

+1에 남겨 둡니다. – hakre

+0

@hakre 감사 :-) – Jazz

관련 문제