Por que meu c # gzip produz um arquivo maior que o Fiddler ou o PHP?
Se eu GZip este texto:
Olá Mundo
através de C # usando este código:
Stream stream = new MemoryStream(Encoding.Default.GetBytes("Hello World"));
var compressedMemoryStream = new MemoryStream();
using (var gzipStream = new GZipStream(compressedMemoryStream, CompressionMode.Compress))
{
stream.CopyTo(gzipStream);
gzipStream.Close();
}
o fluxo resultante tem 133 bytes
Executando a mesma string através do Fiddler'sUtilities.GzipCompress
ouesta página PHP o resultado é de apenas 31 bytes.
Em ambos os casos, a entrada é de 11 bytes, então imagino que o resultado do PHP esteja correto, mas obviamente isso significa que não posso descompactar o zip do PHP de dentro do .NET ou vice-versa. Por que a saída do .NET é muito maior?
Na verdade, acontece que enquanto o resultado do PHP e do Fiddler são do mesmo tamanho, eles não são os mesmos. Eu posso descompactar a versão do PHP no .NET, mas não a versão do Fiddler. A página do PHP descompacta todos os três, então parece que pode haver uma incompatibilidade entre as implementações de gzip do Fiddler e do .NET.
Conforme solicitado, enviei as três saídas para a caixa de depósitoAqui.
E estes são os hexdumps brutos desses arquivos (não tenho certeza se eles são realmente algum uso como este, mas eu acho que isso mostra que a diferença entre o violinista e a versão do PHP está no cabeçalho, ao invés dos próprios dados compactados):
Violinista:
0000-0010: 1f 8b 08 00-c2 e6 ff 4f-00 ff f3 48-cd c9 c9 57 .......O ...H...W
0000-001f: 08 cf 2f ca-49 01 00 56-b1 17 4a 0b-00 00 00 ../.I..V ..J....
PHP:
0000-0010: 1f 8b 08 00-00 00 00 00-00 03 f3 48-cd c9 c9 57 ........ ...H...W
0000-001f: 08 cf 2f ca-49 01 00 56-b1 17 4a 0b-00 00 00 ../.I..V ..J....
C #:
0000-0010: 1f 8b 08 00-00 00 00 00-04 00 ec bd-07 60 1c 49 ........ .....`.I
0000-0020: 96 25 26 2f-6d ca 7b 7f-4a f5 4a d7-e0 74 a1 08 .%&/m.{. J.J..t..
0000-0030: 80 60 13 24-d8 90 40 10-ec c1 88 cd-e6 92 ec 1d .`.$..@. ........
0000-0040: 69 47 23 29-ab 2a 81 ca-65 56 65 5d-66 16 40 cc iG#).*.. eVe]f.@.
0000-0050: ed 9d bc f7-de 7b ef bd-f7 de 7b ef-bd f7 ba 3b .....{.. ..{....;
0000-0060: 9d 4e 27 f7-df ff 3f 5c-66 64 01 6c-f6 ce 4a da .N'...?\ fd.l..J.
0000-0070: c9 9e 21 80-aa c8 1f 3f-7e 7c 1f 3f-22 be 9d 97 ..!....? ~|.?"...
0000-0080: 65 95 7e b7-aa cb d9 ff-13 00 00 ff-ff 56 b1 17 e.~..... .....V..
0000-0085: 4a 0b 00 00-00