Página 1 de 1

Integridade de Campos

Enviado: 15 Out 2007 19:07
por asimoes
Olá Colegas Clippeiros,

Alguém tem alguma rotina que verifique se o conteúdo do campo corresponde ao dado gravado.

Tenho uma tabela que apresentou lixo em um campo numérico, data e logico.

e isso me deixou muito preocupado.

Agradeço,

Clip []´s
:))

Enviado: 15 Out 2007 19:33
por Maligno
Eu tenho um campo em cada registro onde gravo o CRC32 do registro todo. Quando acesso o registro, verifico. Se não bater, já solto o alerto pro usuário e pára tudo. :)

Enviado: 15 Out 2007 20:59
por asimoes
Maligno

Mas como eu faço isso?

Enviado: 15 Out 2007 21:04
por Maligno
Transforme todos os campos em string, some tudo e use minha função de cálculo do CRC32, disponível na minha página.

Enviado: 15 Out 2007 23:50
por asimoes
Maligno,

Baixei sua função para testar.
Quando o campo for lógico e memo como fica?

Transformar number e data para string sem problemas mas lógico e memo...?

Enviado: 16 Out 2007 00:10
por Maligno
Se for lógico, converta para strings: "T" se TRUE ou "F" para FALSE. Ou qualquer outra coisa que possa identificar o valor. Só tem dois mesmo.
Quanto ao memo, coloque como "U", por exemplo, pra identificar como indefinido. O conteúdo do memo em si já é outra história. Não uso memo. Aliás, nunca usei. Mas também não é complicado. Você poderia, por exemplo, criar outro campo de CRC para guardar o hash do memo. Na aplicação, ao recuperar o memo, você compara e pronto. Só dá mais trabalho, mas o princípio não muda.

Enviado: 16 Out 2007 10:02
por janio
Maligno escreveu:...use minha função de cálculo do CRC32...
CRC32 é a mesma coisa que MD5???


Jânio

Enviado: 16 Out 2007 11:53
por Maligno
Ambos são hash. Mas o MD5 é bem mais complexo e, por isso, mais lento. Ainda assim, o MD5 é o mais utilizado como finger-print de segurança, especialmente na Internet.

Enviado: 16 Out 2007 12:52
por janio
Maligno,

Fui dar uma passeada na internet e verifiquei:

1- o CRC32 gera um código com 08 caracteres;

2- o MD5 gera um código com 32 caracteres;

3- A propabilidade do CRC32 gerar um código repetido é mais alta que com o md5. o CRC32 se repetiu 111 vezes em um teste com um milhão de inserções simultaneas. Já o md5 não se repetiu nenhuma vez. ( http://forum.wmonline.com.br/lofiversio ... 74572.html )

Jânio

Enviado: 16 Out 2007 13:02
por Maligno
Exatamente por isso o MD5 é o mais utilizado para finger-print em situações que exigem um nível de segurança maior.

Apesar de quê eu uso CRC32 normalmente, sem medo de repetição, em muitas situações. Inclusive como numerador automático de registro. Agora tem um porém: a chance de repetição se tornará tanto maior quanto menor for o tamanho das amostras. Os códigos de numeração que utilizo são pequenos. Então, após gerar o CRC32, faço uma busca pelo índice. Se já existir, repito a geração. Nunca falhou.

Portanto, como o registro de um banco de dados normalmente não é assim tão pequeno, acho o CRC32 bem aceitável. Mas se você ainda assim não se acha confortável pra usá-lo, opte pelo MD5. Também tenho esta função na forma de uma LIB.