我遇到了.NET示例,了解如何获取签署aws请求api呼叫所需的签名。
我正在开发一款Windows Phone 8应用程序并且遇到了线路
KeyedHashAlgorithm kha = KeyedHashAlgorithm.Create(algorithm);
看来windows phone 8没有Create方法,错误如下:
' System.Security.Cryptography.KeyedHashAlgorithm'不包含 创建
的定义
还有另外一种解决方法吗?
以下是完整的代码段
public static byte[] HmacSHA256(String data, byte[] key)
{
String algorithm = "HmacSHA256";
KeyedHashAlgorithm kha = KeyedHashAlgorithm.Create(algorithm);
kha.Key = key;
return kha.ComputeHash(Encoding.UTF8.GetBytes(data));
}
static byte[] getSignatureKey(String key, String dateStamp, String regionName, String serviceName)
{
byte[] kSecret = Encoding.UTF8.GetBytes(("AWS4" + key).ToCharArray());
byte[] kDate = HmacSHA256(dateStamp, kSecret);
byte[] kRegion = HmacSHA256(regionName, kDate);
byte[] kService = HmacSHA256(serviceName, kRegion);
byte[] kSigning = HmacSHA256("aws4_request", kService);
return kSigning;
}
答案 0 :(得分:1)
您不需要致电Create
来创建算法实例,只需将new
调用construct具体类,例如new HMACSHA256()
。
Create
是一种工厂方法,允许您指定要在配置中使用的算法。在桌面和服务器中,可能存在相同算法的多个实现(本机,硬件加速等),或者您可能希望为用户提供选择所需算法的选项。
这只是从.NET中删除以减少手机和Silverlight的运行时大小的事情之一