Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Por que checksum () retorna o mesmo valor para string diferente


SQL CHECKSUM() e MD5 são funções de hash . O hashing é um algoritmo unidirecional que pode receber qualquer número de caracteres/bytes e retornar um número fixo de caracteres/bytes.

Isso significa que não importa se sua entrada é de 1 caractere ou um livro completo (Guerra e Paz), você receberá o mesmo comprimento de resposta. Portanto, a entrada é um número infinito de combinações, enquanto a saída é finita. Com base nisso, é inevitável obter o mesmo Hash para valores diferentes. Chama-se Colisão de hash . Bons algoritmos de hash tentam mitigar isso para dificultar a localização desses valores em colisão.

Mas chega de teoria sobre hash. Aqui está exatamente a resposta para sua pergunta. O que é o problema com CHECKSUM() ?