Мне нужно создать хэшированный ключ для строки XML для отправки третьей стороне. Это код, который я использую, но он создает другой хеш, чем пример, который отправил мне третий участник. Я прошел через все обучающие программы, которые я могу найти и перечитывать MSDN снова и снова. Что я делаю не так? Или я должен подозревать проблему на другом конце?Правильный способ шифрования строки с использованием HmacSHA256 в 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
Он должен быть закодирован в base-64, поэтому у меня есть последняя строка.
Благодаря
кажется правильным для меня. Вопрос в том, используете ли вы один и тот же ключ для хэша. My.Settings.PortalHASH предполагает, что это не хэш не ключ. Но вы могли бы выбрать вводящее в заблуждение имя, и на самом деле это ключ. Таким образом, мой вопрос в самом деле: как вы получаете ключ? –
Ключ - это Хэш, отправленный нам третьей стороной. Это тот же формат, что и строка, возвращаемая этой функцией, поэтому я подумал, что правильно, чтобы ее байты таким образом передавали их в качестве ключа. –
Если третье лицо отправляет вам хэш ключа, который они используют, вы можете теперь получить ожидаемый результат. Вам нужно убедиться, что вы получаете тот же ключ, что и сторонний участник. –