Ich habe eine Tabelle in SQL Server 2008 R2, die zwei Feld (WordHash, Word) enthalten. Dieses Hash
Feld in C# generiert und ich muss Hash-Code für Word
Feld in SQL Server neu generieren.Warum generierte MD5 Hash in SQL Server nicht gleich sind?
Aber mein Problem ist, dass generierte MD5-Hash in SQL-Server und C# sind unterschiedlich. Ich habe unten Code gefunden, um dieses Problem zu lösen, aber ich habe immer noch das gleiche Problem.
SQL-Code:
CONVERT(NVARCHAR(32),HASHBYTES('MD5', 'some word'), 2)
Nach diesen Codeblock auf meine Frage stellen, sah ich einige verdrahteten Ergebnis! Das ist mein Ergebnis:
Meine Suche:
SELECT
[WordHash],
convert(nvarchar(32),HASHBYTES('MD5', 'Analytics'),2) AS TestHash,
convert(nvarchar(32),HASHBYTES('MD5', [Word]),2) AS SqlHash
FROM myTable
Ergebnis:
WordHash: A768CAA988605A2846599CF7E2D0C26A
TestHash: A768CAA988605A2846599CF7E2D0C26A
SqlHash F4AFA5FEF805F7F5163EC6402BAF61FF
Beachten Sie, dass die 'Analytics'
einem der Datensätze in der Datenbank ist.
Warum TestHash
& SqlHash
sind anders, während sie aus dem gleichen Code generiert !?
Wenn Sie das tun 'N'some nur statt word''' 'einige word'' werde die Ergebnisse die gleichen? –
Dies ist nur eine Vermutung, aber ich vermute, dass das ''Analytics''-Literal und der' [Word] '- Wert mit unterschiedlichen Codierungen behandelt werden, die tatsächlich einen Unterschied in der Hash-Ausgabe machen können. Einer kann Unicode sein, während der andere nicht Unicode ist. – David
@ScottChamberlain du hast absolut recht :). Können Sie einen Link posten, um zu verstehen, warum das passiert? –