Estava testando a rapidez de autenticação pelo algoritmo SHA sobre diferentes tamanhos de imagens, para averiguar qual seria melhor para implementar em um software. Todas as autenticações e tempos gerados mostrado nos gráficos foram realizados sobre os arquivos de imagem.
Os arquivos de imagem foram gerados baseados na mesma origem, um conjunto de diretórios e arquivos que totalizam 2178438971 bytes (~2.2GiB). As imagens foram geradas com o seguinte comando:
# tar c arquivos/ | split -d -b 512M – saida-512-
No exemplo acima temos o agrupamento dos arquivos pelo comando tar e posterior separação em arquivos de 512MiB pelo comando split, o parâmetro -d diz para utilizarmos extensões em formato numérico e -b 512M diz para utilizarmos tamanho de 512MiB.
Testei vários tamanhos: 256MiB, 320MiB, 512MiB, 600MiB, 640MiB, 700MiB e 1GiB.
Grafico 01 (sha1sum)

- Foram excluídos deste gráfico os tamanhos 256 e 320 por apresentarem tempos mais lentos que a imagem de 1GiB;
- O tempo T01 são execuções em sequencia de autenticação sobre a imagem de 512, 600, 640, 700 e 1G, o tempo em T20 segue o mesmo princípio e assim sucessivamente até o T50. O script de autenticação está no final deste post;
- Os tempos são em minutos:segundos:décimos de segundos;
- Percebe-se que a autenticação sobre a imagem de tamanho 512 é a menor alcançada, alguém poderia me explicar por que?
Grafico 02 (sha256sum)
- Decidi utilizar uma variante do SHA para 256bits, para verificar se o comportamento continua com tamanho de hash diferente;
- Pode-se ver que novamente o tamanho 512MiB é o menor alcançado;
- Neste exemplo decidi colocar os tamanhos de 256MiB e 320MiB para demonstrar o que falei anteriormente, os tempos destes são mais lentos que a imagem de 1GiB;
Script para geração da estatística: gerar02
- Este script foi criado para esta estatística somente, ele gera as autenticações e valores de tempo para o gráfico demonstrado neste post para caso alguém queira fazer esta simulação.
CONCLUSÃO
- Até onde testei as imagens de tamanho 512MiB com sha1 (160bits) e sha256 (256bits) são mais rápidas para autenticar do que imagens de outros valores. Lembrando que utilizei o mesmo tamanho de origem para todas as imagens geradas, sendo é claro que a quantidade de arquivos é variado pelo tamanho de imagem (9 arquivos de 256MiB, 5 arquivos de 512MiB, 3 arquivos de 700MiB, etc);
- Não pude entender ainda porque imagens de tamanho menor (256 e 320) são mais lentas para autenticar do que outras que, aparentemente demorariam mais tempo (1GiB);
- Caso alguém queira mostrar outro número mágico como 512 para gerar imagens autenticadas mais rápido estou todo ouvidos.