Правильный способ шифрования строки с использованием HmacSHA256 в VB.NET - PullRequest
0 голосов
/ 08 мая 2009

Мне нужно создать хеш с ключами для строки XML для отправки третьему лицу. Это код, который я использую, но он создает хеш, отличный от того примера, который мне прислал сторонний разработчик. Я прошел все уроки, которые я могу найти, и перечитываю MSDN снова и снова. Что я делаю неправильно? Или я должен заподозрить проблему на другом конце?

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, поэтому у меня последняя строка.

Спасибо

Ответы [ 2 ]

1 голос
/ 08 мая 2009

(читай мои комментарии)
Если My.Settings.PortalHASH является ключом в кодировке Base64, вам нужно сделать следующее:

Dim Key() As Byte = Convert.FromBase64String(My.Settings.PortalHASH)
0 голосов
/ 08 мая 2009

Я не могу комментировать правильность VB, но по очевидности именования могу сказать, что это выглядит правильно.

Так что здесь недостаточно информации, чтобы сказать, что не так; и вы, вероятно, сказали все, что знаете. Поэтому люди, которые будут проверять это для вас, будут вашей третьей стороной. Они смогут сказать, что случилось.

PS: странно, что нет одноразового номера, отправленного другой стороной в качестве вызова?

...