已签名URL的AWS签名

时间:2015-01-29 16:33:24

标签: c# windows-phone-8 amazon-web-services

我遇到了.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;
    }

1 个答案:

答案 0 :(得分:1)

您不需要致电Create来创建算法实例,只需将new调用construct具体类,例如new HMACSHA256()

Create是一种工厂方法,允许您指定要在配置中使用的算法。在桌面和服务器中,可能存在相同算法的多个实现(本机,硬件加速等),或者您可能希望为用户提供选择所需算法的选项。

这只是从.NET中删除以减少手机和Silverlight的运行时大小的事情之一