I’m currently facing a big problem (Environment: .NET 4.5 Core): We need to protect a message with a key using a HMAC-SHA1 algorithm. The problem is that the HMACSHA1-class of the namespace System.Security.Cryptography
and the namespace itself do not exist in .NET 4.5 Core, this namespace only exists in the normal version of .NET.
I tried a lot of ways to find an equivalent namespace for our purpose but the only thing I found was Windows.Security.Cryptography
which sadly does not offer a HMAC-Encryption.
Does anyone have an idea how I could solve our problem or is there any free to use 3rd-party solution?
The Windows.Security.Cryptography
namespace does contain HMAC.
You create a
MacAlgorithmProvider
object by calling the staticOpenAlgorithm
method and specifying one of the following algorithm names:HMAC_MD5 HMAC_SHA1 HMAC_SHA256 HMAC_SHA384 HMAC_SHA512 AES_CMAC
public static byte[] HmacSha1Sign(byte[] keyBytes, string message){
var messageBytes= Encoding.UTF8.GetBytes(message);
MacAlgorithmProvider objMacProv = MacAlgorithmProvider.OpenAlgorithm("HMAC_SHA1");
CryptographicKey hmacKey = objMacProv.CreateKey(keyBytes.AsBuffer());
IBuffer buffHMAC = CryptographicEngine.Sign(hmacKey, messageBytes.AsBuffer());
return buffHMAC.ToArray();
}