/// <summary> /// 生成签名 /// </summary> /// <param name="parms">参数列表</param> /// <param name="appsecret">密钥</param> /// <returns></returns> public string CreateSign(Dictionary <string, string> param, string appsecret) { //抽取需要签名的参数 Dictionary <string, string> signDic = new Dictionary <string, string>(); foreach (var m in param) { if (!string.IsNullOrWhiteSpace(m.Key) && !m.Key.StartsWith("_"))//以下划线开头的参数和sign不参签名 { signDic.Add(m.Key, m.Value); } } signDic.Add(appsecretKey, appsecret); StringBuilder signStr = new StringBuilder(); //按照asc码升序排列 foreach (var m in signDic.OrderBy(m => m.Key, StringComparer.Ordinal)) { signStr.Append(m.Key).Append(splitCharOne).Append(m.Value).Append(splitCharTwo); } //去除最后一个多余的分隔符 if (signStr.Length > 0) { signStr.Remove(signStr.Length - splitCharTwo.Length, splitCharTwo.Length); } string mySign = MD5Helper.En32MD5(signStr.ToString()); return(mySign); }