2016-03-30 18 views
0

Ich versuche, einen Hash aus einer ganzen Zahl mit SQL zu erstellen. Der Zweck ist, eine Funktion zu erstellen, in der ich weiß, ob die empfangenen Daten nicht von der Person manipuliert wurden, die das Skript ausführt. Ich dachte, ich würde MD5-Hash-Integer aber ich bin auf einige Probleme mit dem MD5-Hash nicht genau.Hash von Integer Erstellen SQL mit

Hier ist mein Test-Code, wo ich versuche 20 in den MD5

SELECT CONVERT(NVARCHAR(32),HashBytes('MD5', STR(20)),2) as 'MD5' 

kehrt F63258CAB6D44ED830605298043CBEA4 und

SELECT CONVERT(NVARCHAR(32),HashBytes('MD5', '20'),2) as 'MD5' 

kehrt das erwartete Ergebnis von 98F13708210194C475687BE6106A3B84

zu konvertieren Was ich tue, falsch mit meiner Konvertierung?

Auch habe ich nicht MD5 zu verwenden. Ich bin offen für Vorschläge, eine andere Methode zu verwenden, bei der es für mich einfach zu entschlüsseln ist, aber für den durchschnittlichen Benutzer schwierig, einen Reverse-Engineering durchzuführen, selbst wenn er den Code sieht.

Antwort

3

Wenn Sie das Ergebnis der STR(20) überprüfen finden Sie einige führende Leerzeichen bemerken.

Versuchen LTRIM(20) oder cast(20 as varchar(12)) statt.