Шестнадцатеричный, сгруппированный по байтам, закодированный HMAC SHA-1, в шестнадцатеричный, сгруппированный по 2 байта

То, что я пытаюсь сделать, это взять строку (HEX Byte)

AA BB CC DD EE FF

Используйте предопределенный ky

Кодировать с помощью HMAC SHA-1 (да, я знаю, что это старо, но есть причина)

и преобразуйте его в HEX 2 байта и получите результат, который начинается так:

6f87 4348 6895 ae6d ab2d блкд

Следующий код

 Function ReturnAKey() As String
        Try
            Dim vEncoder As New System.Text.UTF8Encoding
            Dim vKey() As Byte = vEncoder.GetBytes("85 44 E3 B4 7E CA 58 F9 58 30 43 F8")
            Dim vText() As Byte = vEncoder.GetBytes("AA BB CC DD EE FF")
            Dim vHMACSHA1 As New System.Security.Cryptography.HMACSHA1(vKey)
            Dim vHashCode() As Byte = vHMACSHA1.ComputeHash(vText)
            Dim vHash As String = BitConverter.ToString(vHashCode)
            Return vHash.ToLower

        Catch ex As Exception
            EmailError(ex, 24, "TestPage")
            Return "Error"
        End Try
    End Function

возвращается

a0-ae-11-53-f9-fa-fc-65-04-a3-19-54-dd-54-cc-04-df-70-e1-cd

это было бы

a0ae 1153 f9fa.....

и это не то, что я ищу.

Любые указатели, пожалуйста?


person gchq    schedule 31.01.2019    source источник
comment
Ваш ввод неверен. vEncoder.GetBytes не декодирует шестнадцатеричную строку. Вместо этого используйте шестнадцатеричный декодер.   -  person Robert    schedule 31.01.2019
comment
Можете ли вы привести пример, пожалуйста?   -  person gchq    schedule 31.01.2019
comment
Предполагая, что вы используете vb.net (вы пропустили это): stackoverflow.com/questions/48016764/string-hex-to-byte-vb-net   -  person Robert    schedule 31.01.2019
comment
Изменение vKey на Dim vKey As Byte = Convert.ToByte(85 44 E3 B4 7E CA 58 F9 58 30 43 F8, 16) приводит к тому, что байт не может быть преобразован в байт() ниже. Я что-то пропустил? О, я никогда не добавляю VB в теги, так как слишком много людей его пропускают - лучше конвертировать из C#, чем не отвечать :-)   -  person gchq    schedule 31.01.2019
comment
Шестнадцатеричные строки обычно не содержат пробелов —> удалите их. Если вы не помечаете vb.net, вам следует как минимум использовать .net.   -  person Robert    schedule 31.01.2019