Моя реализация на C#:
Код: Выделить всё
private static string CalculateHMACSHA256(string message, string key)
{
byte[] keyBytes = Encoding.UTF8.GetBytes(key);
byte[] inputBytes = Encoding.UTF8.GetBytes(message);
using var hmac = new HMACSHA256(keyBytes);
byte[] hashBytes = hmac.ComputeHash(inputBytes);
return BitConverter.ToString(hashBytes).Replace("-", "").ToLower();
}
Ввод:
Код: Выделить всё
{
"test": "test"
}
- Секретный ключ: 123
- Алгоритм: HMAC-SHA256
- Формат вывода: Шестнадцатеричный нижний регистр
Мой код C# дает мне:
Код: Выделить всё
415aa87815342a5b0505fe1c35a9afb0d58ef5ba9c74feaffdcee9c94591a4a7Код: Выделить всё
46067ae650494e0cb06f9170eabf1eca9b0bf29479142d675508eecedd239668- https://emn178.github.io/online-tools/sha256.html
- https://tools.onecompiler.com/hmac-sha256
- https://codebeautify.org/hmac-generator
- https://www.authgear.com/tools/hmac-sig ... r-verifier
Контекст. Я создаю API ASP.NET Core, которому необходимо проверять подписи HMAC от стороннего клиента, но подписи не совпадают. Мне нужно знать, правильно ли мой код C# рассчитывает HMAC-SHA256.
Тестовый пример 2: минимизированный JSON
И вот здесь становится интересно. Когда я вместо этого использую минифицированный JSON:
- Ввод: {"test":"test"
- Секретный ключ: 123
Код: Выделить всё
158a14842ce68aa9fbf72ebe487f14637f2e18d7d7b4ae8ab383c12904def981Подробнее здесь: https://stackoverflow.com/questions/798 ... ator-all-o
Мобильная версия