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 算力,解读结果公开显示在下面。
还没有人解读过这个文件。