Windows Phone 8.1上的HMACSHA256?

时间:2014-07-16 22:51:35

标签: cryptography windows-phone-8.1

根据这篇MSDN文章,存在一个用于在WP8上的System.Security.Cryptography命名空间中生成HMACSHA256哈希码的类。但是,.Cryptography命名空间似乎不存在。我的项目有问题还是这个文档错了?还有另一种在WP8上计算HMACSHA256哈希的方法吗?

http://msdn.microsoft.com/library/windows/apps/system.security.cryptography.hmacsha256(v=vs.105).aspx

2 个答案:

答案 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应用程序,如果使用较新/其他格式,则不可用。

是的,遗憾的是文档没有说明这一点。