Ich muss einen verschlüsselten Hash für eine XML-Zeichenfolge erstellen, um an eine Drittpartei zu senden. Dies ist der Code, den ich benutze, aber es erzeugt einen anderen Hash als das Beispiel, das die dritte Partei mir geschickt hat. Ich habe alle Tutorials durchgelesen, die ich finden kann und lese MSDN immer wieder. Was mache ich falsch? Oder sollte ich ein Problem am anderen Ende vermuten?Die richtige Methode zum Verschlüsseln einer Zeichenfolge mit HmacSHA256 in VB.NET
Public Shared Function HashString(ByVal StringToHash As String) As String
Dim myEncoder As New System.Text.UTF32Encoding
Dim Key() As Byte = myEncoder.GetBytes(My.Settings.PortalHASH)
Dim XML() As Byte = myEncoder.GetBytes(StringToHash)
Dim myHMACSHA256 As New System.Security.Cryptography.HMACSHA256(Key)
Dim HashCode As Byte() = myHMACSHA256.ComputeHash(XML)
Return Convert.ToBase64String(HashCode)
End Function
Es muss Base-64 codiert sein, weshalb ich die letzte Zeile habe.
Dank
Es scheint mir richtig. Die eine Frage ist, ob Sie den gleichen Schlüssel für den Hash verwenden. My.Settings.PortalHASH schlägt vor, dass es ein Hash ist, kein Schlüssel. Aber Sie könnten einen irreführenden Namen gewählt haben und in Wirklichkeit ist es der Schlüssel. Meine Frage ist also: Wie bekommen Sie den Schlüssel? –
Der Schlüssel ist in der Tat ein Hash von der dritten Partei an uns gesendet. Es ist das gleiche Format wie die von der Funktion zurückgegebene Zeichenfolge, so dass ich dachte, dass es korrekt ist, ihre Bytes auf diese Weise zu erhalten und sie als Schlüssel zu übergeben. –
Wenn der Drittanbieter Ihnen den Hash des Schlüssels sendet, den er verwendet, können Sie jetzt das erwartete Ergebnis erhalten. Sie müssen sicherstellen, dass Sie den gleichen Schlüssel erhalten, den der Drittanbieter verwendet. –