sql >> Base de Datos >  >> RDS >> Sqlserver

Por qué checksum () devuelve el mismo valor para una cadena diferente

SQL CHECKSUM() y MD5 son funciones hash . Hashing es un algoritmo unidireccional que puede tomar cualquier cantidad de caracteres/bytes y devolver una cantidad fija de caracteres/bytes.

Significa que no importa si su entrada es 1 carácter o un libro completo (Guerra y paz), obtendrá la misma longitud de respuesta. Entonces, la entrada es un número infinito de combinaciones, mientras que la salida es finita. Basado en eso, es inevitable obtener el mismo Hash para diferentes valores. Se llama colisión de hash . Los buenos algoritmos Hash intentan mitigar esto para que sea difícil encontrar estos valores en conflicto.

Pero basta de teoría sobre hash. Aquí está exactamente la respuesta a su pregunta. ¿Qué es problema con CHECKSUM() ?