public static string Sign(string method, string accessKeySecret,Dictionary<string, string> bodys)
{
string toSign = method + "&" + HttpUtility.UrlEncode("/", System.Text.Encoding.UTF8).ToUpper() + "&" + getUtf8Encoder(ParamStrURLEncoder(bodys));
//HMACSHA1加密
HMACSHA1 hmacsha1 = new HMACSHA1();
hmacsha1.Key = System.Text.Encoding.UTF8.GetBytes(toSign);
byte[] dataBuffer = System.Text.Encoding.UTF8.GetBytes(accessKeySecret + "&");
byte[] bytes = hmacsha1.ComputeHash(dataBuffer);
return Convert.ToBase64String(bytes);
}
public static string getUtf8Encoder(string param)
{
string result = UrlEncode(param)
.Replace("+", "%20");
result = result.Replace("*", "%2A");
result = result.Replace("%7E", "~");
return result;
}
/// <summary>
/// Url编码转换大写
/// </summary>
/// <param name="str"></param>
/// <returns></returns>
public static string UrlEncode(string str)
{
StringBuilder builder = new StringBuilder();
foreach (char c in str)
{
if (HttpUtility.UrlEncode(c.ToString()).Length > 1 || c == 0x20)
{
builder.Append(HttpUtility.UrlEncode(c.ToString(), Encoding.UTF8).ToUpper());
}
else
{
builder.Append(c);
}
}
return builder.ToString();
}
/// <summary>
/// 将默认url编码改为阿里云规定编码
/// </summary>
/// <param name="param"></param>
/// <returns></returns>
public static string ParamStrURLEncoder(Dictionary<string, string> param)
{
StringBuilder builder = new StringBuilder();
foreach (var entry in param)
{
if (string.IsNullOrWhiteSpace(Convert.ToString(entry.Key)) || entry.Value == null)
{
continue;
}
builder.Append(getUtf8Encoder(entry.Key) + "=" + getUtf8Encoder(Convert.ToString(entry.Value)) + "&");
}
return builder.ToString().Substring(0, builder.ToString().LastIndexOf("&")); ;
}
.net C# 阿里云 邮箱推送 签名验证
最新推荐文章于 2024-05-15 07:30:00 发布