Página 2 de 2

Enviado: 19 Mar 2008 19:50
por sygecom
Rochinha, não sei se vc já testou em harbour, mas em xharbour tem disponivel as funções "HB_CRC32()" , "HB_MD5()" e "HB_MD5FILE()"

Enviado: 19 Mar 2008 20:11
por Maligno
rochinha escreveu:Maligno, voce tem esta mesma função em Clipper puro, ou ASM compilado em 32bits, gostaria de agregar as verificações em meu sistema. Como uso Harbour vejo que isto seria super util.
Eu fiz essa função tanto em Assembly quanto em C++ (uso no TC++). Aliás, no TC++ há componentes que já têm essa função pronta, mas nenhuma delas atende uma necessidade especial: as vezes preciso de um cálculo parcial de uma string (ou arquivo); parte do começo, do meio ou do fim. Essas funções prontas (como a que existe no XHarbour) calculam o CRC32 da fonte indicada na sua totalidade. Além disso, ainda tenho, para casos especiais (paranóia minha), um flag especial para forçar um desvio do algoritmo, a fim de dificultar qualquer tentativa de ataque. Se bem que essa característica pode também ser adicionada numa função comum, com o uso do que chamamos de salt; uma string extra agregada à fonte de dados.

Mas como já disseram, o XHarbour tem não só CRC32 como o MD5. Agora, pra esse tipo de checagem, como não envolve uma necessidade tão grande de segurança (dificilmente alguém vai querer (ou poder) violar o código gerado), aconselho o uso do CRC32, que é bem mais leve.

Enviado: 19 Mar 2008 20:57
por rochinha
Amiguinhos Maligno e Sygecom,

Valeu pelas respostas, vou procurar e analisar o que melhor me sirva.

Não busco segurança a nivel de usuário e sim um método de saber quando um arquivo esta com problema em algum registro por efeitos externos como o que tenho visto por causa de antivirus, pois até que tenha possibilidade de transportar para um controlador melhor irei usar .DBF.

Enviado: 19 Mar 2008 21:29
por Maligno
Sugestão: crie uma função de menu no seu programa para disparar uma checagem total, a exemplo do que fiz. Um simples loop usando as funções que postei. Em Clipper ou XHarbour o código é quase o mesmo. No XHarbour, é apenas o caso de trocar a função de cálculo do CRC32.