C# 如何在.NET4.5内核中计算HMAC-SHA1身份验证码
我目前面临一个大问题(环境:.NET4.5Core):我们需要使用HMAC-SHA1算法使用密钥保护消息。问题是.NET 4.5核心中不存在命名空间C# 如何在.NET4.5内核中计算HMAC-SHA1身份验证码,c#,.net,cryptography,hmac,hmacsha1,C#,.net,Cryptography,Hmac,Hmacsha1,我目前面临一个大问题(环境:.NET4.5Core):我们需要使用HMAC-SHA1算法使用密钥保护消息。问题是.NET 4.5核心中不存在命名空间System.Security.Cryptography的HMACSHA1类和命名空间本身,该命名空间仅存在于.NET的正常版本中 我尝试了很多方法为我们的目的找到一个等价的名称空间,但我唯一找到的是Windows.Security.Cryptography,遗憾的是它没有提供HMAC加密 是否有人知道我如何解决我们的问题,或者是否有免费的第三方解决
System.Security.Cryptography
的HMACSHA1类和命名空间本身,该命名空间仅存在于.NET的正常版本中
我尝试了很多方法为我们的目的找到一个等价的名称空间,但我唯一找到的是Windows.Security.Cryptography
,遗憾的是它没有提供HMAC加密
是否有人知道我如何解决我们的问题,或者是否有免费的第三方解决方案?Windows.Security.Cryptography命名空间确实包含HMAC 通过调用static
OpenAlgorithm
方法并指定以下算法之一,可以创建一个MacAlgorithmProvider
对象
名称:HMAC\u MD5 HMAC\u SHA1 HMAC\u SHA256 HMAC\u SHA384 HMAC\u SHA512 AES\u CMAC
谢谢你的快速回复。这很有帮助,我能够成功地运行CreateHMAC方法(在technet上描述),但我需要的是这样的东西:HMAC_SHA1(“键”,“快速棕色狐狸跳过懒狗”)=0xde7c9b85b8b78aa6bc8a7a36f70a90701c9db4d9您知道如何检索这样的散列值吗。提前感谢您的澄清,当您提到.net 4.5 core时,您指的是.net 4.5的win8 api子集,这就是为什么您没有访问System.Security.Cryptography的权限?
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();
}