Zipar um arquivo de texto com hashes sha256 parece muito eficiente

3

Eu tenho um arquivo de texto codificado em ASCII, onde cada linha tem a seguinte estrutura:

XYplorer nn.nn.nnnn [yyyy-mm-dd hh.mm.ss] [S256 S256].zip
         ↑↑ ↑↑ ↑↑↑↑  ↑↑↑↑ ↑↑ ↑↑ ↑↑ ↑↑ ↑↑   ↑64× ↑64×

assim, uma linha tem 177 caracteres, 27 caracteres não mudam e os outros 150, e os dois hashes compõem 128 desses caracteres. Eu também suponho que os hashes são basicamente texto aleatório, dificultando a compactação, então

27/177 = 15.3% texto fixo

22/177 = 12.4% alteração de texto

128/177 = 72.3% texto aleatório

No entanto, compactando esse arquivo (1854 linhas) de maneira padrão (clique direito) no Windows, obtenho uma taxa de compactação de 49%, o que me deixa perplexa porque parece muito alto / eficiente.

Você pode me explicar como a parte aleatória pode ser comprimida tanto?

    
por Marco 01.09.2015 / 18:31

1 resposta

4

O elemento chave aqui é que este é um arquivo codificado ASCII.

Assim, cada caractere é codificado usando 8 bits. 177 × 8 = 1416 bits de cada linha. No entanto, 177 caracteres não contam terminações de linha, em janelas, uma linha final é codificada como "\ r \ n" (retorno de carro, alimentação de linha), então usará 179 caracteres por linha, emprestando 1432 bits por linha.

Seus SHA256s são 64 dígitos hexadecimais cada. Um dígito hexadecimal pode ser compactado para usar apenas 4 bits (2 ^ 4 = 16) que é metade do tamanho.

Vamos dividi-lo:

  • (27 + 2) / 179 = 16,2% de texto fixo (supondo-se infinitamente comutável)
  • 22/179 = 12,3% mudando o texto
  • 128/179 = 71,5% do texto que pode ser codificado usando o tamanho% 50.

Usando apenas esse mapeamento, recebo 128/2 + 22 = 86 bytes ou 688 bits.

  • 688/1432 = 48% do tamanho original.

Isso não leva em consideração qualquer compactação adicional que possa ser realizada na troca de texto, parece que eles geralmente são números ascii, que sofrem as mesmas perdas de embalagem que os dígitos hexadecimais ascii.

Para ser 100% honesto, estou surpreso que o zip do Windows não faz um trabalho melhor.

    
por 10.11.2018 / 17:57