MD5

Fórum sobre a linguagem CA-Clipper.

Moderador: Moderadores

Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

MD5

Mensagem por Maligno »

Adaptei para o Clipper um programa para cálculo do MD5 de strings e arquivos. Já está disponível para download.
Não é um simples objeto. Além dos fontes, segue junto uma LIB em que consta o objeto da função de cálculo e mais um grupo de funções que são pre-requisitos para o compilador C que eu usei. Pra usar a função de cálculo, é só acrescentar a LIB no script do linker. Não tem erro.

Sintaxe da função: MD5Calc(<xSource>)

onde o argumento xSource tanto pode ser uma string como a alça de um arquivo previamente aberto. No fonte do demo a forma de uso é bem clara. Ler o README.TXT também ajuda.

[]'s
Maligno
http://www.buzinello.com/prg
Nota de Moderação:
por Pablo César: URL reditada para possibilitar download do novo endereço do MDE5.ZIP no site do Maligno
And
Usuário Nível 3
Usuário Nível 3
Mensagens: 163
Registrado em: 25 Set 2005 18:31
Localização: São Paulo/SP

Mensagem por And »

Te devo mais uma! :)Pos

:{

Abraço,
Anderson
Clipper 52e/Clipper 53b/Blinker 7/Vlib/Fglib/DBFNTX
_______________________________________________
Migrando para [x]Harbour 0.99.60 (SimpLex) + MiniGUI 1.2 Exp. (Build 22)
_______________________________________________
Assine o manifesto dos artistas pela preservação da amazônia.
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Re: Obrigado...

Mensagem por Maligno »

neonormal escreveu:Salvou a semana...
Valeu cara...
Dinada. :)
E seja bem-vindo ao grupo.

[]'s
Maligno
http://www.buzinello.com/prg
carlos_dornelas
Usuário Nível 3
Usuário Nível 3
Mensagens: 400
Registrado em: 25 Ago 2004 21:54

Mensagem por carlos_dornelas »

Maligno, me desculpe a ignorância, mas para que serve exatamente o MD5? Para confirmar a integridade de um DBF, por exemplo?

Antonio Carlos
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem por Eolo »

Diz que o MD5 (como criptografia) já foi quebrado, e tem "coisa" mais nova (ainda intacta) na área, é verdade?
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

carlos_dornelas escreveu:para que serve exatamente o MD5? Para confirmar a integridade de um DBF, por exemplo?
MD5 é o que se chama de algoritmo de hash, e como todo hash, serve como uma espécie de "impressão digital" de um conjunto de dados quaisquer. Você pode utilizá-lo para checar a integridade de arquivos.

Uma aplicação típica: o usuário cadastra seu log-in no sistema e este armazena apenas o MD5 deste log-in. Quando se logar novamente, o sistema apenas compara o MD5 armazenado com o MD5 deste log-in. São diversas aplicações possíveis. Eu próprio uso MD5 para autenticar renegociação de contas num sistema financeiro que tenho. E uso CRC32 para comparação de listas de GETs no sistema e para check de integridade de registros nos meus bancos de dados.

Enfim, um hash como MD5, CRC32, SHA1, etc pode ser utilizado para quaisquer tipos de "comparações" ou "certificações" que se precise. Aliás, no novo esquema de notas fiscais eletrônicas do Brasil, o governo determinou que os usuários devem autenticar os dados usando SHA1 na montagem do WebService para a transmissão da eNF.

[]'s
Maligno
http://www.buzinello.com/prg
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Eolo escreveu:Diz que o MD5 (como criptografia) já foi quebrado, e tem "coisa" mais nova (ainda intacta) na área, é verdade?
Para um algorítimo de hash não existe o termo "quebrado". Aliás, se fosse possível "quebrar" de forma sistemática um hash, significa que teríamos uma "fórmula" para essa quebra. Com uma fórmula assim, este seria, certamente, o melhor compactador de todos os tempos, pois bastaria calcular o hash de um arquivo de 10 GB, digamos; obter seus 32 bytes (conforme o hash usado) e depois, usar tal fórmula para reverter o hash e obter o arquivo original. Seria uma maravilha. :)))

Mas isso não existe. Em termos de hash não se usa o termo "quebra", mas sim "resistência". A cada vez que alguém cria um hash, surge um grupo que tenta atacá-lo por cripto-análise. O ataque, neste caso, é no bom sentido. É preciso provar que o algoritmo é bom mesmo. E neste ataque tenta-se encontrar uma "colisão", que nada mais é que um conjunto de dados que equivale ao hash sendo atacado. Quanto mais resistente à colisão, tanto melhor será o hash. É claro que sempre pode-se fazer um ataque por "força bruta" (tentativa e erro). Tenho um programa muito bom pra isso. :)

Já conseguiram criar técnicas para reverter o hash criado pelo MD5 e assim, criar strings que colidem com os dados de entrada. Apesar disso, ele ainda é muito utilizado, já que é considerado suficientemente seguro para algumas aplicações. Mas ele já não é mais recomendado para quem precisa de segurança extrema. Nestes casos, normalmente se usa algum outro hash, como SHA1 ou SHA2. Este último tem vários tamanhos (máx=512 bits). São bem mais seguros. Por enquanto. :)

[]'s
Maligno
http://www.buzinello.com/prg
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem por Eolo »

Carlos Donelas,

Sò como "comparação", imagina o seguinte:
- o CPF com seus dígitos de verificação (DV)
- um Arquivo com o seu HASH

Toda vez que vc calcular os DV de um CPF, vai dar sempre o mesmo resultado, certo? No HASH, é a mesma coisa: um mesmo arquivo vai dar sempre o mesmo resultado hash.

Se eu lhe mandar um CD inteiro via MSN, como saber se a transmissão foi toda OK? Bom, eu calculo o HASH dele aqui e lhe mando, junto com os dados do CD. Depois do download, vc calcula o HASH aí e compara com o que eu mandei: se deu o mesmo resultado hash, o download foi feito corretamente.
Avatar do usuário
Eolo
Colaborador
Colaborador
Mensagens: 1134
Registrado em: 08 Dez 2005 18:24
Localização: São Paulo - SP

Mensagem por Eolo »

Maligno,
Ops, eu pra variar usando termo errado... Pensei em colisão e falei "quebrado". Ainda bem que não falei "quebração"... :-)
carlos_dornelas
Usuário Nível 3
Usuário Nível 3
Mensagens: 400
Registrado em: 25 Ago 2004 21:54

Mensagem por carlos_dornelas »

Valeu amigos!!

Este forum é mesmo uma preciosidade! Obrigado aos colegas pelos esclarecimentos.

[]s

Antonio Carlos
And
Usuário Nível 3
Usuário Nível 3
Mensagens: 163
Registrado em: 25 Set 2005 18:31
Localização: São Paulo/SP

Mensagem por And »

Maligno,

Recebi o e-mail abaixo:

-------------------------------------------------------------------------------------
Bom dia, Anderson

Me desculpe por importuna-lo.
Procurei por ajuda no forum e não visualizei nada sobre o assunto.
Você teve algum problema ao utilizar a lib MD5.LIB
Digo isto porque quando mando compilar aparece o erro "MD5Calc unresolved
external".
Não consigo identificar a função dentro da Lib.

Sds

Luiz Wagner Rodrigues dos Santos
Olimpo Informática
Tel : 55 27 8146-2233
55 27 3347-4111

-------------------------------------------------------------------------------------

Ps: Se puder dispensar alguns minutos de atenção com o amigo eu ficaria muito grato.

Abraço,
Anderson
Clipper 52e/Clipper 53b/Blinker 7/Vlib/Fglib/DBFNTX
_______________________________________________
Migrando para [x]Harbour 0.99.60 (SimpLex) + MiniGUI 1.2 Exp. (Build 22)
_______________________________________________
Assine o manifesto dos artistas pela preservação da amazônia.
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

No dia 24 eu respondi uma MP que o Wagner havia me enviado. Informei o link para ele baixar a LIB. Até imaginei que tinha dado tudo certo.

Sendo este o erro, significa que o linker não encontrou a LIB. Então, de duas uma: ou ele configura o SET LIB para o caminho onde foi gravada a LIB ou ele apela e grava a LIB no diretório do programa. Não há mais o que fazer além disso, haja vista que esta LIB não tem dependências externas.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
Grings
Usuário Nível 3
Usuário Nível 3
Mensagens: 340
Registrado em: 18 Ago 2004 13:51

Mensagem por Grings »

Maligno,
O link não está funcionando.
Avatar do usuário
Maligno
Membro Master
Membro Master
Mensagens: 6398
Registrado em: 06 Jul 2004 01:40
Localização: Londrina/PR

Mensagem por Maligno »

Grings escreveu:Maligno,
O link não está funcionando.
Ah, sim. Eu usava aquele link há mais de ano. Agora agrupei esse tipo de arquivo em uma árvore de diretórios. Pegue a LIB daqui.
[]'s
Maligno
---
Não respondo questões técnicas através de MP ou eMail. Não insista.
As dúvidas devem ser postadas no fórum. Desta forma, todos poderão
se beneficiar das respostas.

---
Se um dia precisar de uma transfusão de sangue você perceberá como
é importante a figura do doador. Procure o hemocentro de sua cidade e
se informe sobre a doação de sangue, plaquetas e medula óssea. Doe!
sambomb
Usuário Nível 3
Usuário Nível 3
Mensagens: 250
Registrado em: 24 Out 2008 17:02
Localização: Itaocara - RJ - Brasil

Cálculo de MD5, como fazer em Clipper?

Mensagem por sambomb »

Tenho uma função em xHarbour HB_MD5File() e HB_MD5(), e gostaria de utilizar essas com Clipper, é possível gerar um OBJ e linkar no sistema em Clipper ou existe alguma função que faça esse calculo?
Imagem

Rca Sistemas - Itaocara - RJ
Responder