Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Perché checksum() restituisce lo stesso valore per stringhe diverse

SQL CHECKSUM() e MD5 sono funzioni hash . L'hashing è un algoritmo unidirezionale che può richiedere un numero qualsiasi di caratteri/byte e restituire un numero fisso di caratteri/byte.

Significa che indipendentemente dal fatto che il tuo input sia 1 carattere o un libro completo (Guerra e Pace), otterrai la stessa lunghezza di risposta. Quindi l'input è un numero infinito di combinazioni mentre l'output è finito. Sulla base di ciò è inevitabile ottenere lo stesso hash per valori diversi. Si chiama Collisione hash . Gli algoritmi di Good Hash cercano di mitigare questo problema per rendere difficile trovare questi valori in collisione.

Ma abbastanza teoria sull'hashing. Ecco esattamente la risposta alla tua domanda. Che cos'è il problema con CHECKSUM() ?