根据这篇MSDN文章,存在一个用于在WP8上的System.Security.Cryptography命名空间中生成HMACSHA256哈希码的类。但是,.Cryptography命名空间似乎不存在。我的项目有问题还是这个文档错了?还有另一种在WP8上计算HMACSHA256哈希的方法吗?
答案 0 :(得分:3)
经过多次痛苦,我有一个有效的功能。
public static string HmacSha256(string secretKey, string value)
{
// Move strings to buffers.
var key = CryptographicBuffer.ConvertStringToBinary(secretKey, BinaryStringEncoding.Utf8);
var msg = CryptographicBuffer.ConvertStringToBinary(value, BinaryStringEncoding.Utf8);
// Create HMAC.
var objMacProv = MacAlgorithmProvider.OpenAlgorithm(MacAlgorithmNames.HmacSha256);
var hash = objMacProv.CreateHash(key);
hash.Append(msg);
return CryptographicBuffer.EncodeToHexString(hash.GetValueAndReset());
}
答案 1 :(得分:1)
Windows Phone 8.1应用程序有两种类型:基于Silverlight的应用程序(如WP7.X和WP8.0)以及基于Universal / RT / Jupiter格式的应用程序(Windows 8.1也使用)
System.Security.Cryptography
命名空间仅适用于Silverlight应用程序,如果使用较新/其他格式,则不可用。
是的,遗憾的是文档没有说明这一点。