Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Warum checksum() den gleichen Wert für verschiedene Strings zurückgibt

SQL CHECKSUM() und MD5 sind Hash-Funktionen . Hashing ist ein Einwegalgorithmus, der eine beliebige Anzahl von Zeichen/Bytes annehmen und eine feste Anzahl von Zeichen/Bytes zurückgeben kann.

Das heißt, egal ob Ihre Eingabe 1 Zeichen oder ein komplettes Buch (Krieg und Frieden) ist, Sie erhalten die gleiche Antwortlänge. Die Eingabe ist also eine unendliche Anzahl von Kombinationen, während die Ausgabe endlich ist. Aus diesem Grund ist es unvermeidlich, den gleichen Hash für verschiedene Werte zu erhalten. Es heißt Hash-Kollision . Gute Hash-Algorithmen versuchen, dies zu mildern, um es schwierig zu machen, diese kollidierenden Werte zu finden.

Aber genug Theorie zum Thema Hashing. Hier ist genau die Antwort auf Ihre Frage. Was ist der Problem mit CHECKSUM() ?