5

我目前面临一个大问题(环境:.NET 4.5 Core):我们需要使用 HMAC-SHA1 算法来保护带有密钥的消息。问题是命名空间的HMACSHA1-classSystem.Security.Cryptography和命名空间本身在.NET 4.5 Core中是不存在的,这个命名空间只存在于普通版本的.NET中。

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

有谁知道我可以如何解决我们的问题,或者是否有任何免费使用的 3rd-party 解决方案?

4

1 回答 1

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

}
于 2013-01-11T13:43:10.317 回答