2016-03-25 3 views
0

Я пытаюсь создать хэш HMAC SHA512 с base64, используя секрет secret и полезную нагрузку foo. Я не могу заставить код .NET получить правильное значение. Мне интересно, является ли кодирование основной проблемой..Net HMAC и base64 Ошибка кодирования

Код:

UTF8Encoding encoding = new UTF8Encoding(); 
HMACSHA512 hmac = new HMACSHA512(encoding.GetBytes("secret")); // init the HMAC hash with "secret" as a byte array 
byte[] hash = hmac.ComputeHash(encoding.GetBytes("foo")); // hash the payload 
String result = Convert.ToBase64String(hash); // Base64 encode the payload 

неверная хэш & base64 результат:

gt9xA96Ngt5F4BxF/mQrXRPGwrR97K/rwAlDHGZcb6Xz0a9Ol46hvekUJmIgc+vqxho0Ye/UZ+CXHHiLyOvbvg==

Ожидаемый хэш & base64 результат:

ODJkZjcxMDNkZThkODJkZTQ1ZTAxYzQ1ZmU2NDJiNWQxM2M2YzJiNDdkZWNhZmViYzAwOTQzMWM2NjVjNmZhNWYzZDFhZjRlOTc4ZWExYmRlOTE0MjY2MjIwNzNlYmVhYzYxYTM0NjFlZmQ0NjdlMDk3MWM3ODhiYzhlYmRiYmU=

+1

Если вы не генерируя результат "ожидаемого", вы должны быть получать его где-то в другом месте. Где это видят? – dana

+0

@dana У меня есть программа node.js и программа php, создающая правильный хэш. – mark

ответ

2

Поскольку вторая версия - это только Base64 Hex-представления, вам нужно преобразовать массив байтов в hex, а не в версию Base64 ASCII.

Шаги:

+0

Так оно и было. Я видел вопросы, на которые вы ссылались, но не имело смысла, что это было важно, пока вы не сказали, что мне нужно сначала преобразовать байт [] в шестую. Спасибо. – mark

Смежные вопросы