var apiKey = "apikey";
var secretKey = "secretkey";
// Generate a new globally unique identifier for the salt
var salt = System.Guid.NewGuid().ToString();
// Initialize the keyed hash object using the secret key as the key
HMACSHA256 hashObject = new HMACSHA256(Encoding.UTF8.GetBytes(secretKey));
// Computes the signature by hashing the salt with the secret key as the key
var signature = hashObject.ComputeHash(Encoding.UTF8.GetBytes(salt));
// Base 64 Encode
var encodedSignature = Convert.ToBase64String(signature);
// URLEncode
encodedSignature = System.Web.HttpUtility.UrlEncode(encodedSignature);