Вычисляю HMAC SHA1, алгоритм следующий:
public static string Encode(string input, string key)
{
var byteArray = Encoding.ASCII.GetBytes(input);
using (var hmacsha1 = new HMACSHA1(Encoding.ASCII.GetBytes(key)))
{
using (var stream = new MemoryStream(byteArray))
{
return hmacsha1.ComputeHash(stream).Aggregate("", (s, e) => s + String.Format("{0:X2}", e), s => s);
}
}
}
Хэш считается, но если в сообщении присутствуют символы \" (например объектов сериализованных в json) то хэш вычисляется неправильно. Как можно решить данную проблему?
Пример вычисления хэшей: Сообщение hello, ключ hello. Мой код выдает результат 9ADE18F3E0EE81A5343F4A005F795DBAF9CEEFD8, код какого нибудь онлайн сервиса выдает точно такой же хэш. Сообщение hello\", ключ hello. Мой код выдает 89E81E2037598EFAB46FF882661EECD3FF409D73 Какой нибудь онлайн сервис c24001586dffaa049e74893babf11625995bd570
Вот это HMAC от строки hello"
, которая в c# записывается так "hello\""
:
89e81e2037598efab46ff882661eecd3ff409d73
А это HMAC от строки hello\"
, которая в c# записывается так "hello\\\""
:
c24001586dffaa049e74893babf11625995bd570
Онлайн сервисы воспринимают строку в чистом виде, не обрабатывая экранирующие символы.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как контролировать изменение дизайна при изменении длины слов? На некоторых языках слова очень длинные в переводе, как сохранить дизайн...
У меня есть закрытый и открытые тестовые ключи в виде массивов байт(ну или HEX строки, без разницы)Хочу на тестовых ключах проверить правильность...
Сейчас хочу начать изучение C#, прошелся по списку из этого ответа Книги и учебные ресурсы по C#