我遇到了一个关于如何获得签署aws调用所需的签名的.NET示例。
我正在开发一款windows phone 8应用程序,却被线卡住了。
KeyedHashAlgorithm kha = KeyedHashAlgorithm.Create(algorithm);windows 8似乎没有创建方法,错误如下:
'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;
}发布于 2015-01-29 16:44:32
您不需要调用Create来创建一个算法的实例,您只需调用new来构造具体的类,例如new HMACSHA256()。
Create是一种工厂方法,允许您指定要在配置中使用的算法。在台式机和服务器中,可能有多个相同算法的实现(本机、硬件加速等),或者您可能希望给用户选择他们想要的算法的选项。
这只是从.NET中删减手机和Silverlight运行时大小的工作之一。
https://stackoverflow.com/questions/28219806
复制相似问题