I Hash-Wert erzeugt habe unter Funktion in SQL mitNeed C# -Äquivalent für die unterhalb SQL HashBytes funktionieren
SQL-Abfrage
Select hashbytes('MD5', PNumber+CONVERT(VARCHAR(50),cast(datestamp as binary),1))
From dbo.Events
Jetzt muß ich das äquivalent C# Funktion erhalten, um den Hash zu erhalten Wert und übergeben Sie es an eine gespeicherte Prozedur.
Ich verwende den folgenden Code, um die C# Entsprechung zu erhalten. Aber Werte passen nicht
C# -Code
var strDate = policyEventFromQueue.DateStamp.ToString();
var binaryvalue = Encoding.Unicode.GetBytes(strDate);
var hashkey = GetMD5Hash(PNumber + binaryvalue);
public static byte[] GetMD5Hash(string input)
{
System.Security.Cryptography.MD5CryptoServiceProvider x = new System.Security.Cryptography.MD5CryptoServiceProvider();
byte[] bs = System.Text.Encoding.Unicode.GetBytes(input);
bs = x.ComputeHash(bs);
return bs;
}
Hier sind die Testergebnisse:
von SQL Server:
PNumber ='4272535529'
DateStamp ='2016-06-30 12:19:35.257961'
HashValue : 0x104E09499B76CB59420AEEEDBBE187F8
In C# ich den Wert von DB Feldwert bekommen als unter
[0]: 16
[1]: 78
[2]: 9
[3]: 73
[4]: 155
[5]: 118
[6]: 203
[7]: 89
[8]: 66
[9]: 10
[10]: 238
[11]: 237
[12]: 187
[13]: 225
[14]: 135
[15]: 248
Von C# GetMD5Hash Funktion ich bin immer Wert wie unten
[0]: 30
[1]: 153
[2]: 105
[3]: 203
[4]: 34
[5]: 124
[6]: 20
[7]: 12
[8]: 207
[9]: 113
[10]: 210
[11]: 144
[12]: 18
[13]: 145
[14]: 22
[15]: 36
Jeder möglicher Vorschlag geschätzt.
Beginnen Sie damit, den gleichen Datumswert zu erhalten, bevor er gehashed wird. – Magnus
Sind Sie sicher, dass die Hashing-Funktion nicht gleich funktioniert oder ist die Zeichenfolge, die Sie Hashing verwenden, anders? Was genau macht 'PNumber + CONVERT (VARCHAR (50), cast (Datumsstempel als binär), 1)' in SQL im Vergleich zu 'PNumber + Encoding.Unicode.GetBytes (strDate)'? – Jacob
Was ist der Typ des Datumsstempels? Ist es eine Schnur? – Ben