MD5 – algoritmo criptográfico que gera uma chave 128bits, útil para guardar senhas, ou para verificar a integridade de arquivos. (para mais detalhes de uma busca pela net)
Prisma já tinha uma biblioteca md5 feita em prisma puro.
Como seu desempenho não era bom com arquivos grandes, acabei portando uma da linguagem C: a pmd5., mais rápida e eficiente. Ainda sim para arquivos muito grandes era necessário esperar até o fim do processo, isso parava o programa. Foi por causa disso que fiz uma atualização: agora é possível fazer o hash md5 de bloco em bloco com as novas funções pmd5.inicialize(), pmd5.atualize() e pmd5.finalize_hex(), pmd5.finalize();
Para arquivos pequenos, pode continuar usando as funções pmd5.binario() e pmd5.hex();
Baixe aqui os fontes para compilar em Linux: pmd5-1.2
Após baixar os fontes, entre na pasta pmd5/pmd5-source/ e no terminal Linux execute o compila.sh
pmd5 compilado para Linux(32/64) e Win32 em breve!
Exemplos:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
//testado em linux. local pmd5 = inclua'pmd5' local file = 'md5.h'; //Quando o arquivo for muito grande, para o programa não ficar travado, use esta técnica: local a,err = es.abra(file,'leiturabin'); se nao a entao erro(err); fim local txt = a:leia(100); //processa de 100 em 100 bytes. local ctx = pmd5.inicialize();//retorna um objeto ctx(um contexto md5) enquanto txt inicio ctx:atualize(txt); //note o uso dos dois pontos para acessar o método do objeto. txt = a:leia(100); // imprima(txt); fim a:feche(); local final_md5 = ctx:finalize_hex(); imprima(final_md5); se sis.nome=='linux' entao sis.execute('md5sum ' .. file); fim |
1 |