Segunda-feira, 23 Julho 2007
Como usar openssl e md5sum para verificar integridade de arquivos
Sempre preciso copiar arquivos entre solaris, linux e windows. Para verificar se o arquivo foi copiado com sucesso, uso um algoritmo aplicado no arquivo que faço a cópia, que efetua um cálculo único. Esse algoritmo é o MD5. Para invocar o cálculo desse algoritmo uso uma ferramenta no linux chamado md5sum.
Essa ferramenta, efetua o cálculo e a verificação de integridade de um arquivo.
Por que usar verificação de integridade na cópia de arquivos ?
Pois a cópia pode ter sido corrompida na transferência.
Então segue um exemplo de usar o md5sum
Criar o hash
md5sum arquivo.tar > arquivo.tar.md5
Verificar o hash
md5sum -c arquivo.tar.md5
A verificação do hash, usa o seguinte formato para verificação
534a15536aa0152e178361983c678cc0 arquivo.tar.md5
O motivo desta dica, não é necessariamente sobre o md5sum, mas porque essa ferramenta não está disponível nativamente no solaris, onde uso o openssl.
No solaris, para criar o hash, uso openssl da seguinte maneira
openssl dgst -md5 <arquivo>
Que gera um resultado da seguinte maneira
$ openssl dgst -md5 list.conf MD5(list.conf)= e5c8ebe8e2113448fd318328cf5ca582
Que é diferente do md5sum, então não é possível realizar a verificação de integridade usando checksums md5.
Por isso criei um script bash, para solaris que faz uma tarefa semelhante do utilitário md5sum.
Download do script bash md5sum_solaris.sh
Dependências: openssl, awk, sed
O código é o seguinte:
#!/bin/bash
if [ "$1" ] ; then
if [ $1 = '-c' ] && [ $2"x" != 'x' ] ; then
shift
cat $1 | while read hash_line
do
hash_value=`echo $hash_line | awk '{print $1}'`
filename=`echo $hash_line | awk '{print $2}'`
echo -n $filename": "
if [ -f "$filename" ] ; then
hash_var=`openssl dgst -md5 $filename | awk '{print $2}'` ;
if [ $hash_var == $hash_value ] ; then
echo "OK"
else
echo "FAILED"
fi
else
echo "FAILED: No such file or directory"
fi
done
else
openssl dgst -md5 $* | sed 's/[\(\)=]//g;s/MD5//g' | awk '{print $2" "$1}'
fi
else
echo "Usage:
$0 -c hashs.md5 to verify checksums
$0 to create checksums
"
fi
Escrito por at 3:56 AM categorizado por Dicas e Scripts
[Trackback URL desta mensagem]
Links del.icio.us



