如何在.NET 4.5 Core中计算HMAC-SHA1身份验证代码

时间:2013-01-11 13:37:48

标签: c# .net cryptography hmac hmacsha1

我目前面临一个大问题(环境:.NET 4.5 Core):我们需要使用HMAC-SHA1算法用密钥保护消息。问题是命名空间System.Security.Cryptography的HMACSHA1类和命名空间本身在.NET 4.5 Core中不存在,此命名空间仅存在于.NET的正常版本中。

我尝试了很多方法来为我们的目的找到一个等效的命名空间,但我发现的唯一的事情是Windows.Security.Cryptography,遗憾的是它没有提供HMAC加密。

有没有人知道如何解决我们的问题或者是否可以免费使用第三方解决方案?

1 个答案:

答案 0 :(得分:9)

Windows.Security.Cryptography命名空间确实包含HMAC。

  

通过调用静态MacAlgorithmProvider方法并指定以下算法之一来创建OpenAlgorithm对象   名称:HMAC_MD5 HMAC_SHA1 HMAC_SHA256 HMAC_SHA384 HMAC_SHA512 AES_CMAC

http://msdn.microsoft.com/en-us/library/windows/apps/windows.security.cryptography.core.macalgorithmprovider.aspx

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();

}