sql >> Database >  >> RDS >> Sqlserver

Waarom checksum() dezelfde waarde retourneert voor verschillende tekenreeksen

SQL CHECKSUM() en MD5 zijn Hash-functies . Hashing is een eenrichtingsalgoritme dat een willekeurig aantal tekens/bytes kan opnemen en een vast aantal tekens/bytes kan retourneren.

Het betekent dat het niet uitmaakt of je invoer 1 karakter of een compleet boek (Oorlog en Vrede) is, je krijgt dezelfde lengte van de reactie terug. Dus de invoer is een oneindig aantal combinaties, terwijl de uitvoer eindig is. Op basis daarvan is het onvermijdelijk om dezelfde hash te krijgen voor verschillende waarden. Het heet Hash-botsing . Goede Hash-algoritmen proberen dit te verminderen om het moeilijk te maken om deze botsende waarden te vinden.

Maar genoeg theorie over hashen. Hier is precies het antwoord op uw vraag. Wat is de probleem met CHECKSUM() ?



  1. Linq reeks records selecteren

  2. Hoe een 32-bits getekende integer-overloop in PL/SQL te simuleren?

  3. MYSQL:record invoegen als het al bestaat update record

  4. Hoe JSON-gegevens op te halen uit MySQL?