Business/DAL/MWSUI.cs

(开头部分) 3KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography;
using System.Text;
using System.Threading.Tasks;

namespace Business.DAL
{
    public class MWSUI
    {
        public static string SignParameters(Uri serviceUri,
                  string signatureVersion, string signatureMethod,
                  IDictionary<string, string> parameters, string awsSecretKey, string postMethod)
        {
            parameters.Add("SignatureVersion", signatureVersion);
            string algorithm = "HmacSHA1";
            string stringToSign = null;
            if ("2".Equals(signatureVersion))
            {
                algorithm = signatureMethod;
                parameters.Add("SignatureMethod", algorithm);
                stringToSign = CalculateStringToSignV2(serviceUri, parameters, postMethod);
            }
            else
            {
                throw new ArgumentException("Invalid Signature Version specified");
            }
            return Sign(stringToSign, awsSecretKey, algorithm);
        }
        private static String Sign(string data, string key, string algorithm)
        {
            KeyedHashAlgorithm alg = KeyedHashAlgorithm.Create(algorithm.ToUpper());
            alg.Key = Encoding.UTF8.GetBytes(key);
            return Convert.ToBase64String(alg.ComputeHash(Encoding.UTF8.GetBytes(data.ToCharArray())));
        }
        private static string CalculateStringToSignV2(Uri serviceUri,
                IDictionary<string, string> parameters, string postMethod)
        {
            StringBuilder data = new StringBuilder();
            data.Append(postMethod);
            data.Append("\n");
            data.Append(serviceUri.Host.ToLower());

            if (serviceUri.Port != 443 && serviceUri.Port != 80)
            {
                data.Append(":").Append(serviceUri.Port);
            }
            data.Append("\n");
            string uri = serviceUri.LocalPath;
            data.Append(UrlEncode(uri, true));
            data.Append("\n");
            //IDictionary<string, string> sorted = new SortedDictionary<string, string>(parameters, StringComparer.Ordinal);
            IEnumerator<KeyValuePair<string, string>> pairs = parameters.GetEnumerator();
            bool isFirst = true;
            while (pairs.MoveNext())
            {
                if (isFirst)
                    isFirst = false;
                else
后面还有 32 行代码,购买后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明

AI 解读 AI

登录后可用,每次 10 算力,解读结果公开显示在下面。

还没有人解读过这个文件。