使用 HMACSHA 在 .NET Standard 2.0 中签署消息
Signing message in .NET Standard 2.0 with HMACSHA
我有旧代码,想在 .NET Standard 2.0 中使用它。我找到了 System.Security.Cryptography.HMACSHA1 并且我知道如何计算散列但我不知道如何进行签名。如何使用 .NET Standard 2 编写以下代码?
public string GenerateSignature(string key, string content)
{
var keyMaterial = CryptographicBuffer.ConvertStringToBinary(key, BinaryStringEncoding.Utf8);
var macAlgorithm = MacAlgorithmProvider.OpenAlgorithm("HMAC_SHA1");
var macKey = macAlgorithm.CreateKey(keyMaterial);
var buffer = CryptographicBuffer.ConvertStringToBinary(content, BinaryStringEncoding.Utf8);
var signatureBuffer = CryptographicEngine.Sign(macKey, buffer);
var signature = CryptographicBuffer.EncodeToBase64String(signatureBuffer);
return signature;
}
很多 HMAC 内容在 net standard 和旧框架版本之间没有变化。以下代码应适用于 .NET 4.5.1、Net Standard 1.3 及更高版本和 .NET Core。它稍微改编自工作代码以匹配您的方法
public string GenerateSignature(string key, string content)
{
var hmac = new System.Security.Cryptography.HMACSHA1();
hmac.Key = Encoding.UTF8.GetBytes(key);
var contentBytes = Encoding.UTF8.GetBytes(content);
var signature = hmac.ComputeHash(contentBytes);
return Convert.ToBase64String(signature);
}
我有旧代码,想在 .NET Standard 2.0 中使用它。我找到了 System.Security.Cryptography.HMACSHA1 并且我知道如何计算散列但我不知道如何进行签名。如何使用 .NET Standard 2 编写以下代码?
public string GenerateSignature(string key, string content)
{
var keyMaterial = CryptographicBuffer.ConvertStringToBinary(key, BinaryStringEncoding.Utf8);
var macAlgorithm = MacAlgorithmProvider.OpenAlgorithm("HMAC_SHA1");
var macKey = macAlgorithm.CreateKey(keyMaterial);
var buffer = CryptographicBuffer.ConvertStringToBinary(content, BinaryStringEncoding.Utf8);
var signatureBuffer = CryptographicEngine.Sign(macKey, buffer);
var signature = CryptographicBuffer.EncodeToBase64String(signatureBuffer);
return signature;
}
很多 HMAC 内容在 net standard 和旧框架版本之间没有变化。以下代码应适用于 .NET 4.5.1、Net Standard 1.3 及更高版本和 .NET Core。它稍微改编自工作代码以匹配您的方法
public string GenerateSignature(string key, string content)
{
var hmac = new System.Security.Cryptography.HMACSHA1();
hmac.Key = Encoding.UTF8.GetBytes(key);
var contentBytes = Encoding.UTF8.GetBytes(content);
var signature = hmac.ComputeHash(contentBytes);
return Convert.ToBase64String(signature);
}