using System.Security.Cryptography;
public static void Main()
var signature = "{\"a\": 1, \"b\": \"c\", \"d\": \"efg\", \"h\": 12.45}";
var shaKeyBytes = Encoding.UTF8.GetBytes(key);
using (var shaAlgorithm = new HMACSHA256(shaKeyBytes))
var signatureBytes = Encoding.UTF8.GetBytes(signature);
var signatureHashBytes = shaAlgorithm.ComputeHash(signatureBytes);
var signatureHashHex = string.Concat(Array.ConvertAll(signatureHashBytes, b => b.ToString("X2"))).ToLower();
var plainTextBytes = System.Text.Encoding.UTF8.GetBytes(signatureHashHex);
var signatureBase64 = System.Convert.ToBase64String(plainTextBytes);
Console.WriteLine(signatureHashHex);
Console.WriteLine(signatureBase64);