using System.Security.Cryptography;
public static void Main()
string message = "sQ14CZhvGkRwQZGZHnkc6Mu21nAG9yes65855788025298917881569435984105{\"gateway\":\"PAYEEZY\",\"apiKey\":\"sQ14CZhvGkRwQZGZHnkc6Mu21nAG9yes\",\"apiSecret\":\"OqSODWG5krhu1SsY\",\"authToken\":\"fdoa-f7f8a27079f7e5ce07a792fb040894fbf7f8a27079f7e5ce\",\"transarmorToken\":\"NOIW\",\"zeroDollarAuth\":false}";
string secret = "OqSODWG5krhu1SsY";
string hash = GetHash(message, secret);
Console.WriteLine("Expected: B+agJWpCPLO4DtEA7+YlVl8O0fSlR5K0FO2QrkjhFkQ=");
Console.WriteLine("Actual: " + hash);
public static string GetHash(string message, string secret)
byte[] keyByte = Encoding.UTF8.GetBytes(secret);
byte[] messageBytes = Encoding.UTF8.GetBytes(message);
using (var hmacsha256 = new HMACSHA256(keyByte))
byte[] hashmessage = hmacsha256.ComputeHash(messageBytes);
string hexEncodedMessage = ByteArrayToHexString(hashmessage);
return Convert.ToBase64String(Encoding.UTF8.GetBytes(hexEncodedMessage));
public static string ByteArrayToHexString(byte[] ba)
StringBuilder hex = new StringBuilder(ba.Length * 2);
hex.AppendFormat("{0:X2}", b);